Referencia de palabras clave de funciones de Visual Basic para aplicaciones (Español - Inglés)

Visual Basic para aplicaciones es el lenguaje de programación común a todas las aplicaciones de Microsoft Office. Debe utilizar las palabras clave inglesas de Visual Basic para aplicaciones en la ventana de código de todas las aplicaciones de Office. Sin embargo, en Microsoft Access, también puede utilizar el nombre español de la mayoría de las funciones de Visual Basic para aplicaciones para expresiones en consultas, formularios, informes o macros.

Nota   Para obtener más información acerca de consideraciones internacionales, haga clic en  [image].

Las siguientes tablas proporcionan una referencia Español - Inglés así como una referencia Inglés - Español para estas funciones de Visual Basic para aplicaciones.

Español - Inglés

Nombre español	Nombre inglés		Nombre español	Nombre inglés
Abs	Abs		Formato$	Format$
AgregFecha	DateAdd		Hex	Hex
Ahora	Now		Hex$	Hex$
Amortiz	DDB		Hora	Hour
Año	Year		HoraActual	Time
ArcTg	Atn		HoraActual$	Time$
Cad	Str		Interés	IPmt
Cad$	Str$		Izq	Left
Cadena	String		Izq$	Left$
Cadena$	String$		IzqB	LeftB
Car	Chr		IzqB$	LeftB$
Car$	Chr$		Ln	Log
CarB	ChrB		Longitud	Len
CarB$	ChrB$		LongitudB	LenB
CBool	CBool		Mayús	UCase
CByte	CByte		Mayús$	UCase$
CCadena	CStr		Medio	Mid
CDoble	CDbl		Medio$	Mid$
CEntero	CInt		MedioB	MidB
CFecha	CDate		MedioB$	MidB$
CLargo	CLng		Mes	Month
CMoneda	CCur		Minús	LCase
CódigoCar	Asc		Minús$	LCase$
CódigoCarB	AscB		Minuto	Minute
CompCadena	StrComp		NPer	NPer
Conmutador	Switch		NúmAleat	Rnd
Cos	Cos		Oct	Oct
Cronómetro	Timer		Oct$	Oct$
CSimple	CSng		Pago	Pmt
CuadroEntr	InputBox		ParcFecha	DatePart
CuadroMsj	MsgBox		Partición	Partition
CVariante	CVar		PPago	PPmt
Der	Right		QBColor	QBColor
Der$	Right$		Raíz2	Sqr
DerB	RightB		Recortar	Trim
DerB$	RightB$		Recortar$	Trim$
Día	Day		RecortarDer	RTrim
DíaSemana	Weekday		RecortarDer$	RTrim$
DifFecha	DateDiff		RecortarIzq	LTrim
Dir	Dir		RecortarIzq$	LTrim$
Dir$	Dir$		RGB	RGB
DirAct	CurDir		Segundo	Second
DirAct$	CurDir$		Sen	Sin
Ejecutar	Shell		SerieFecha	DateSerial
Elegir	Choose		SerieHora	TimeSerial
EnCad	InStr		Signo	Sgn
EnCadB	InStrB		SiInm	IIF
Ent	Int		SinDec	Fix
Entorno	Environ		SLN	SLN
EsFecha	IsDate		SYD	SYD
EsNulo	IsNull		Tasa	Rate
EsNum	IsNumeric		Tg	Tan
Espacio	Space		VA	PV
Espacio$	Space$		Val	Val
EsVacío	IsEmpty		ValorFecha	DateValue
Exp	Exp		ValorHora	TimeValue
Fecha	Date		VarType	VarType
Fecha$	Date$		VF	FV
Formato	Format
Inglés - Español

Nombre inglés	Nombre español		Nombre inglés	Nombre español
Abs	Abs		LenB	LongitudB
Asc	CódigoCar		Log	Ln
AscB	CódigoCarB		LTrim	RecortarIzq
Atn	ArcTg		LTrim$	RecortarIzq$
CBool	CBool		Mid	Medio
CByte	CByte		Mid$	Medio$
CCur	CMoneda		MidB	MedioB
CDate	CFecha		MidB$	MedioB$
CDbl	CDoble		Minute	Minuto
Choose	Elegir		Month	Mes
Chr	Car		MsgBox	CuadroMsj
Chr$	Car$		Now	Ahora
ChrB	CarB		NPer	NPer
ChrB$	CarB$		Oct	Oct
CInt	CEntero		Oct$	Oct$
CLng	CLargo		Partition	Partición
Cos	Cos		Pmt	Pago
CSng	CSimple		PPmt	PPago
CStr	CCadena		PV	VA
CurDir	DirAct		QBColor	QBColor
CurDir$	DirAct$		Rate	Tasa
CVar	CVariante		RGB	RGB
Date	Fecha		Right	Der
Date$	Fecha$		Right$	Der$
DateAdd	AgregFecha		RightB	DerB
DateDiff	DifFecha		RightB$	DerB$
DatePart	ParcFecha		Rnd	NúmAleat
DateSerial	SerieFecha		RTrim	RecortarDer
DateValue	ValorFecha		RTrim$	RecortarDer$
Day	Día		Second	Segundo
DDB	Amortiz		Sgn	Signo
Dir	Dir		Shell	Ejecutar
Dir$	Dir$		Sin	Sen
Environ	Entorno		SLN	SLN
Exp	Exp		Space	Espacio
Fix	SinDec		Space$	Espacio$
Format	Formato		Sqr	Raíz2
Format$	Formato$		Str	Cad
FV	VF		Str$	Cad$
Hex	Hex		StrComp	CompCadena
Hex$	Hex$		String	Cadena
Hour	Hora		String$	Cadena$
IIF	SiInm		Switch	Conmutador
InputBox	CuadroEntr		SYD	SYD
InStr	EnCad		Tan	Tg
InStrB	EnCadB		Time	HoraActual
Int	Ent		Time$	HoraActual$
IPmt	Interés		Timer	Cronómetro
IsDate	EsFecha		TimeSerial	SerieHora
IsEmpty	EsVacío		TimeValue	ValorHora
IsNull	EsNulo		Trim	Recortar
IsNumeric	EsNum		Trim$	Recortar$
LCase	Minús		UCase	Mayús
LCase$	Minús$		UCase$	Mayús$
Left	Izq		Val	Val
Left$	Izq$		VarType	VarType
LeftB	IzqB		Weekday	DíaSemana
LeftB$	IzqB$		Year	Año
Len	Longitud


Referencia de palabras clave de funciones agregadas de SQL (Español - Inglés)

En Microsoft Access puede utilizar el nombre español de las siguientes funciones agregadas de SQL para una consulta en la cuadrícula de diseño de consultas. Debe utilizar el nombre inglés para expresiones agregadas en la propiedad SQL de un objeto QueryDef o cuando esté creando un objeto Recordset basado en una consulta SQL.

Nota   Para obtener más información sobre consideraciones internacionales, haga clic en  [image].

Nombre español	Nombre inglés		Nombre inglés	Nombre español
Cuenta DesvEst, DesvEstP Promedio Suma Var, VarP	Count StDev, StDevP Avg Sum Var, VarP		Avg Count StDev, StDevP Sum Var, VarP	Promedio Cuenta DesvEst, DesvEstP Suma Var, VarP


Temas de conversión y compatibilidad

No se puede abrir una base de datos de Microsoft Access 97 usando las versiones anteriores de Microsoft Access. Sin embargo, puede vincular e importar tablas de Microsoft Access 97 (versión 8.0) a bases de datos de Microsoft Access 95 (versión 7.0). También puede exportar una tabla de la versión 8.0 a una base de datos de la versión 7.0, y puede cortar, copiar o pegar datos desde una tabla de una versión 8.0 a una tabla de una versión 7.0.

Puede habilitar una base de datos creada en una versión anterior de Microsoft Access para ejecutarla en Microsoft Access 97 pero no puede agregar nuevos objetos ni cambiar el diseño de los objetos en la base de datos.

Si falla el intento de convertir una base de datos a Microsoft Access 97, también puede crear una nueva base de datos Microsoft Access 97, y después importar todos los objetos de la versión anterior a su nueva de datos.

Nota   Si necesita compartir una base de datos con usuarios que están ejecutando una versión anterior de Microsoft Access, debería abrir la base de datos de la versión anterior con la opción Abrir, para habilitarla, en lugar de hacerlo con la opción Convertir. Si debe compartir la base de datos con usuarios que estén ejecutando una versión anterior de Microsoft Access, no convierta la base de datos al formato Microsoft Access 97.

Convertir una base de datos

Convertir una base de datos protegida de una versión anterior de Microsoft Access

Convertir bases de datos de biblioteca y complementos

Lo nuevo para los programadores: Introducción

Nombres de propiedades cambiados

Opciones cambiadas y eliminadas en Microsoft Access 97

Convertir código de Access Basic a Visual Basic

Convertir código que llama a una DLL

Acciones y métodos de macros del objeto DoCmd

Convertir combinaciones de teclas de EnviarTeclas (SendKeys)

Estilo de las constantes intrínsecas

Compatibilidad del alcance y nombre de los objetos

Compatibilidad de la biblioteca de objetos DAO

Ejemplos de conversión de código de acceso a datos (DAO)


Convertir bases de datos de biblioteca y complementos

Si se utilizan bases de datos de biblioteca o de complementos creadas en versiones anteriores de Microsoft Access, debe convertirlas a formato de Microsoft Access 97 (versión 8.0) antes de que pueda usarlas con las aplicaciones creadas en Microsoft Access 97. Es posible que necesite hacer algunos cambios en los objetos, macros y procedimientos en sus bases de datos de biblioteca y complementos para tener la certeza de que funcionan correctamente.

Para obtener más información acerca de las bases de datos de biblioteca, consulte el capítulo 12, "Uso de bases de datos de biblioteca y bibliotecas de vínculos dinámicos", en Creación de aplicaciones con Microsoft Access 97 o consulte Establecer referencias a bibliotecas de tipos.

Hacer referencia y cargar bases de datos de bibliotecas

Antes de utilizar una biblioteca en Microsoft Access 97, es necesario establecer una referencia a la base de datos de biblioteca desde cada una de las aplicaciones que la use. Esta referencia se establece haciendo clic en Referencias en el menú Herramientas mientras se encuentra en la vista Diseño de un módulo. Una base de datos a la que ha hecho referencia debe encontrarse en formato Microsoft Access 97.

Una base de datos de biblioteca solamente debería contener código de Visual Basic, que puede ser llamada desde cualquier aplicación que mantenga una referencia a esa biblioteca. En las versiones 1.x y 2.0 de Microsoft Access, una base de datos de bibliotecas se cargaba en el inicio creando una entrada en la sección Bibliotecas de su archivo .ini. La mayoría de la información que se almacenaba en un archivo .ini de las versiones 1.x y 2.0 se almacena ahora en el Registro de Windows. Sin embargo, no es necesario crear un conjunto de claves en el Registro de Windows para poder utilizar una base de datos de biblioteca.

Referencias circulares entre las bibliotecas

En las versiones 1.x y 2.0 de Microsoft Access, es posible establecer referencias circulares entre bibliotecas. Sin embargo, éstas no están permitidas en las versiones posteriores de Microsoft Access. En otras palabras, una vez haya creado una referencia desde la Biblioteca A a la Biblioteca B, no puede crear una referencia desde la Biblioteca B a la Biblioteca A.

Comportamiento del menú de complementos personalizados

En las versiones 1.x y 2.0 de Microsoft Access, los complementos aparecían de forma automática en el submenú Complementos del menú Archivo. En las versiones posteriores de Microsoft Access, el submenú Complementos está en el menú Herramientas. En Microsoft Access 97 también puede hacer referencia a los complementos desde cualquier barra de herramientas o menú.


Compatibilidad del alcance y nombre de los objetos

Las reglas de alcance de Visual Basic se aplican a los nombres que elija para sus objetos, módulos y procedimientos.

Módulos y otros objetos con el mismo nombre

Cuando dé nombre a un módulo, evite poner delante de los nombres de los módulos "Formulario_" o "Informe_". De esta forma podría causar algún conflicto con el código existente detrás de los formularios e informes.

Si algún módulo de una aplicación creada en las versiones 1.x o 2.0 de Microsoft Access no cumple estas reglas para nombrar objetos, Microsoft Access 97 generará un error cuando intente convertir la aplicación. Por ejemplo, un módulo denominado Formulario_Pedidos en alguna base de datos de las versiones 1.x o 2.0 de Microsoft Access generará un error y pedirá que cambie el nombre del módulo antes de intentar convertirla.

Módulos y procedimientos con el mismo nombre

Puede tener un procedimiento con el mismo nombre que un módulo. Sin embargo, para llamar a ese procedimiento desde una expresión desde cualquier parte de la aplicación, debe utilizar un nombre totalmente cualificado para el procedimiento, incluyendo el nombre del módulo y del procedimiento, como en el siguiente ejemplo:

EstáCargado.EstáCargado("Pedidos")

Procedimientos y controles con el mismo nombre

Si llama a un procedimiento desde un formulario y ese procedimiento tiene el mismo nombre que un control del formulario, es necesario que cualifique totalmente la llamada al procedimiento con el nombre del módulo en el que se ubica. Por ejemplo, si desea llamar a un procedimiento denominado ImprimirFactura que reside en un módulo estándar denominado Utilidades y existe un botón en el mismo formulario denominado ImprimirFactura, utilice el nombre totalmente cualificado Utilidades.ImprimirFactura cuando llame al procedimiento desde su formulario o módulo del formulario.

Controles con nombres similares

No es posible tener un control con un nombre que difiera del nombre de un control existente en sólo un espacio o un símbolo. Por ejemplo, si se tiene un control denominado [Apellidos], no es posible tener un control denominado [Ape llidos] o [Ape+llidos].

Módulos con el mismo nombre que una biblioteca de tipos

No es posible guardar un módulo con el mismo nombre que una biblioteca de tipos. Si intenta guardar un módulo con el nombre "DAO", "Access" o "VBA", obtendrá un error indicando que el nombre está en conflicto con un módulo, proyecto o biblioteca de objetos. De forma similar, si hubiera establecido una referencia a otra biblioteca de tipos, como por ejemplo la biblioteca de tipos de Microsoft Excel, no es posible guardar un módulo con el nombre "Excel".

Campos con el mismo nombre que un método

Si un campo de la tabla tiene el mismo nombre que un método DAO (Objeto de acceso a datos) de un objeto Recordset, no puede hacer referencia al campo correspondiente en el recordset con la sintaxis . (punto). Debe utilizar la sintaxis ! (signo de exclamación) o Microsoft Access generará un error. El siguiente ejemplo muestra cómo hacer referencia a un campo denominado AgregarNuevo en un recordset abierto en una tabla llamada Contactos:

Dim dbs As Database, rst As Recordset

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("Contactos")

Debug.Print rst!AgregarNuevo

Módulos con el mismo nombre que una función de Visual Basic

Si guarda un módulo con el mismo nombre que una función intrínseca de Visual Basic, Microsoft Access generará un error cuando intente ejecutar esa función. Por ejemplo, si guarda un módulo denominado MsgBox y después se intenta ejecutar un procedimiento que llame a la función MsgBox, Microsoft Access genera el error "Se esperaba una variable o procedimiento, no un módulo".

Módulos con el mismo nombre que un objeto

Si una base de datos creada con una versión anterior de Microsoft Access incluye un módulo que tiene el mismo nombre que un objeto de Microsoft Access o un objeto DAO, es posible que se produzcan errores de compilación al convertir la base de datos a Microsoft Access 97. Por ejemplo, un módulo denominado "Form" o "Database" puede generar un error de compilación. Para evitar estos errores, cambie el nombre del módulo.

Dar nombre a campos que se usan en expresiones o que son dependientes de controles de formularios e informes

Cuando cree un campo en una tabla que vaya a ser dependiente de un control en un informe o que se va a usar en una expresión en la propiedad OrigenDelControl (ControlSource) de un control o un informe, evite asignar al campo un nombre que sea el mismo nombre que el de un método del objeto Application. Para ver una lista de métodos del objeto Application, haga clic en Examinador de objetos en el menú Ver mientras se encuentre en el módulo vista Diseño. Haga clic en Access en el cuadro Proyecto/Biblioteca, elija Application en el cuadro Clases, y examine los métodos del objeto Application del cuadro Miembros de.

Cuando cree un campo en una tabla que vaya a ser dependiente de un control en un formulario o informe, evite asignar al campo cualquiera de los siguientes nombres: AddRef, GetIDsOfNames, GetTypeInfo, GetTypeInfoCount, Invoke, QueryInterface o Release.

Identificadores con el mismo nombre que una palabra clave de Visual Basic

La versión de Visual Basic que usa Microsoft Access 97 contiene algunas palabras clave nuevas de Visual Basic, de forma que ya no puede usar esas palabras clave como identificadores. Estas palabras clave son: AddressOf, Assert, Decimal, DefDec, Enum, Event, Friend, Implements, RaiseEvent y WithEvents. Cuando convierta una base de datos creada con una versión anterior de Microsoft Access, los identificadores existentes que sean iguales que una palabra clave nueva de Visual Basic generarán un error de compilación. Para corregir este problema, cambie el nombre de los identificadores.

Nombres de proyecto iguales que objetos de Microsoft Access

Un nombre de proyecto es una cadena que es el nombre de la aplicación Microsoft Access. En versiones anteriores de Microsoft Access, el nombre del proyecto era el nombre de la base de datos. En Microsoft Access 97, el nombre del proyecto está especificado por el valor de la propiedad ProjectName y su valor predeterminado es el nombre de la base de datos. Si convierte una base de datos con un nombre que es igual al de una clase de objetos, por ejemplo, application, form o report, Microsoft Access agregará un guión bajo (carácter de subrayado) al nombre de la base de datos para crear un nombre de proyecto que no entre en conflicto con objetos existentes.


Acciones y métodos de macros del objeto DoCmd

Para realizar acciones de macros desde código en Microsoft Access 97, use el objeto DoCmd y sus métodos. Este objeto reemplaza la instrucción DoCmd usada en las versiones 1.x y 2.0 de Microsoft Access para llevar a cabo una acción de macro.

Cuando convierte una base de datos, Microsoft Access convierte automáticamente cualquier instrucción DoCmd y las acciones que se ejecutan en el código de Access Basic a métodos del objeto DoCmd, reemplazando el espacio con el operador . (punto).

Algunas acciones de macro funcionan de forma diferente en Microsoft Access 97 de lo que lo hacían en las versiones 1.x, 2.0 ó 7.0; estas diferencias se detallan a continuación.

Bases de datos creadas con Microsoft Access 95

La acción EjecutarElementoMenú

La acción EjecutarElementoMenú ya no se utiliza en Microsoft Access 97. La nueva acción EjecutarComando se puede usar para realizar las tareas para las que se usaba la acción EjecutarElementoMenú.

Cuando se habilita una base de datos creada con una versión anterior de Microsoft Access, la acción EjecutarElementoMenú continuará funcionando como lo hacía anteriormente.

Cuando se convierte una base de datos creada con una versión anterior de Microsoft Access, todas las acciones de EjecutarElementoMenú de macros son reemplazadas por acciones de EjecutarComando la primera vez que se guarden las macros después de la conversión. Los métodos DoMenuItem usados en los procedimientos de Visual Basic no cambian.

Bases de datos creadas con Microsoft Access versión 1.x ó 2.0

La acción TransferirHojaCálculo

Microsoft Access 97 no puede importar hojas de cálculo de Microsoft Excel versión 2.0, ni de Lotus 1-2-3 versión 1.0. Si la base de datos convertida contiene una macro que proporcionaba esta funcionalidad mediante la acción TransferirHojaCálculo en Microsoft Access versión 1.x o 2.0, al convertir la base de datos se cambia el argumento Tipo de hoja de cálculo a Microsoft Excel versión 3.0 (si especificó originalmente Microsoft Excel versión 2.0) o se produce un error si originalmente especificó el formato Lotus 1-2-3 versión 1.0.

Para solucionar este problema, convierta las hojas de cálculo a una versión posterior de Microsoft Excel o de Lotus 1-2-3 antes de importarlas en Microsoft Access.

Las acciones TransferirTexto y TransferirHojaCálculo

En Microsoft Access 97, no se puede especificar una instrucción SQL para especificar los datos que se van a exportar cuando está usando la acción TransferirTexto o la acción TransferirHojaCálculo. En lugar de usar una instrucción SQL, primero debe crear una consulta y luego especificar el nombre de la consulta en el argumento Nombre de la tabla.

Comparaciones en las que intervienen valores Null

En las versiones 1.x y 2.0 de Microsoft Access, si compara dos expresiones dentro de la  condición en una macro mediante un operador de comparación y una de las expresiones es Null, Access Basic devolverá True o False como resultado de dicha comparación, dependiendo del operador de comparación que utilice. En Microsoft Access 95 y Microsoft Access 97, Visual Basic devuelve Null para una comparación en la que una de las expresiones es Null. Para determinar si la comparación se evalúa como Null, use la función EsNulo (IsNull) para comprobar el resultado de la comparación.


Convertir código de Access Basic a Visual Basic

En Microsoft Access 97, Visual Basic para aplicaciones reemplaza a Access Basic, que fue utilizado en las versiones 1.x y 2.0 de Microsoft Access. En la mayoría de los casos, Visual Basic es idéntico a Access Basic y Microsoft Access realiza de forma automática la mayoría de las conversiones necesarias de su código cuando convierte su base de datos.

Sin embargo, el proceso de conversión realiza algunos cambios en su código, que usted debería conocer, y hay algunos cambios adicionales que debe hacer usted mismo para que la aplicación se ejecute con éxito en Microsoft Access 97.

Nota   El modificador /runtime de la línea de comandos no está disponible en las versiones independientes o en la edición Professional de Office de Microsoft Access 97. De todas formas, el modificador /runtime está disponible en la edición Developer de Office de Microsoft Access 97.

Llamada a la interfaz de programación de aplicaciones (API) de Windows

Si su código de Access Basic versión 1.x o 2.0 existente realiza llamadas a la Interfaz de programación de aplicaciones (API) de Windows, puede que sea necesario modificar estas llamadas cuando convierta al base de datos. Las versiones 1.x y 2.0 de Microsoft Access son aplicaciones de 16 bits y se ejecutan en versiones de Windows de 16 bits. Microsoft Access 97 es una aplicación de 32 bits y se ejecuta en versiones de Windows de 32 bits: Windows 95 y la plataforma Windows NT.

Compruebe las instrucciones Declare para asegurarse de que hacen referencia a las bibliotecas de vínculos dinámicos (DLL) de 32 bits correctas. Por ejemplo, las versiones de Windows de 32 bits incluyen User32.dll; en las versiones más antiguas de Windows, esta DLL se denominaba User.dll. Si desea más información al respecto, consulte Convertir código que llama a una DLL. Para obtener información adicional, consulte "Portar las soluciones basadas en Microsoft Office de 16 bits a Microsoft Office de 32 bits" en la sección Información Técnica del sitio Web de Microsoft Access Developer en http://www.microsoft.com/accessdev/.

Los nombres de algunas funciones de la API de Windows han cambiado. Además, las funciones de las API de Windows de 32 bits distinguen entre mayúsculas y minúsculas. Para obtener una referencia completa, consulte Microsoft Win32 Software Development Kit.

Algunas propiedades y argumentos opcionales son estrictamente de un tipo

Ciertas propiedades que devolvían valores Variant en versiones anteriores de Microsoft Access devuelven ahora cadenas. De esta manera el código que incluye estas propiedades se ejecuta más rápidamente; de todas formas, cuando convierta una base de datos de una versión anterior de Microsoft Access a Microsoft Access 97, debe comprobar que no se introducen errores debido a estos nuevos valores devueltos.

Además, algunos argumentos opcionales que eran de tipo Variant en versiones anteriores de Microsoft Access son ahora estrictamente de un tipo. Los métodos, propiedades y funciones afectadas incluyen el método GoToPage de un objeto Form, los métodos OpenCurrentDatabase, Echo, Quit, CreateForm, CreateReport, CreateControl y CreateReportControl del objeto Application, la propiedad Columna (Column) de una lista combinada o un cuadro de lista y las funciones agregadas de dominio. Si el código incluye alguno de estos elementos, es conveniente que compruebe que no se introducen errores al convertir la base de datos.

Para comprobar si hay errores, en primer lugar compile todo el código de la base de datos. A continuación compruebe si hay errores en tiempo de ejecución cuando ejecuta el código. Los errores más frecuentes son el error "No coinciden los tipos" o el error "Uso no válido de Null".

También debería comprobar la existencia de errores no tan visibles que pueden aparecer en el código cuando convierte la base de datos; por ejemplo, la propiedad OrigenDelRegistro (RecordSource) de un control que previamente devolvía un valor Variant, y que ahora devuelve una cadena. Una cadena no puede contener un valor Nulo, aunque un Variant sí puede. En una base de datos convertida, el código que comprueba si el valor de la propiedad OrigenDelRegistro (RecordSource) es Nulo ya no se ejecutará correctamente, porque el valor de la propiedad OrigenDelRegistro (RecordSource) nunca será Nulo. El procedimiento siguiente es un ejemplo de código que comprueba si el valor de la propiedad OrigenDelRegistro (RecordSource) de un cuadro de texto es Nulo.

Private Sub Form_Load()

If IsNull(Me.RecordSource) Then

Me.Recordsource = "Empleados"

End If

End Sub

En Microsoft Access 97, la función EsNulo (IsNull) nunca devolverá True para el valor de la propiedad OrigenDelRegistro (RecordSource). Si la propiedad OrigenDelRegistro (RecordSource) no se ha establecido previamente en el ejemplo anterior, su valor es una cadena en blanco, el valor devuelto por la función EsNulo (IsNull) es False, por lo que el procedimiento nunca entrará en la instrucción If...Then para establecer la propiedad OrigenDelRegistro (RecordSource).

Para corregir el código del ejemplo anterior, use la función Longitud (Len) para comprobar la longitud de la cadena devuelta por la propiedad OrigenDelRegistro (RecordSource) para determinar si es una cadena en blanco. Las siguientes líneas corrigen el código del ejemplo anterior:

If Len(Me.RecordSource) = 0 Then

' Ponga aquí el resto del procedimiento.

Cambios en los módulos

En las versiones 1.x y 2.0 de Microsoft Access, los módulos que contienen procedimientos generales no específicos para ningún formulario o informe se denominan módulos globales. En Microsoft Access 97, se llaman módulos estándar.

Microsoft Access 97 incluye ahora módulos de clase, que puede usar para crear objetos personalizados. Todos los procedimientos públicos de un módulo de clase se convierten en métodos y propiedades de un objeto personalizado cuando crea una nueva instancia de la clase. Los módulos de clase existen tanto de forma independiente como asociados a formularios e informes. Para obtener más información acerca de los módulos de clase, consulte Programar con módulos de clase.

La función CurrentDb frente a DBEngine(0)(0)

Utilice la función CurrentDb en lugar de DBEngine(0)(0) para devolver una variable de objeto Database que apunte a la base de datos activa. La función CurrentDb crea otra instancia de la base de datos activa, mientras que DBEngine(0)(0) hace referencia a la copia abierta de la base de datos activa. El uso de DBEngine(0)(0) limita la posibilidad de utilizar más de una variable del tipo Database que haga referencia a la base de datos activa.

La sintaxis DBEngine(0)(0) es todavía compatible, de forma que Microsoft Access no cambia el código durante el proceso de conversión. Sin embargo, debería de considerar hacer estas modificaciones en el código para evitar conflictos en un entorno multiusuario.

La función DirAct (CurDir)

La función DirAct (CurDir) se comporta de forma diferente de como lo hacía en la versión 1.x o 2.0 debido a la forma en la que las aplicaciones interactúan con Windows 95. Puesto que cada aplicación tiene su propia carpeta actual, establecer la carpeta actual en Windows 95 haciendo doble clic en un icono no afecta a la carpeta activa de Microsoft Access. La función DirAct (CurDir) de Microsoft Access 97 devuelve siempre la ruta de acceso actual.

Asignar un objeto OLE a una variable

Si en su código se manipulan objetos OLE u otros datos binarios, debería utilizar una matriz de caracteres para almacenar los datos binarios. En las versiones 1.x y 2.0 de Microsoft Access, cuando era necesario manipular los objetos o datos en el código, se asignaban a las variables de cadena objetos OLE o cualquier otro dato binario de menos de 64K de tamaño. También se asignaban los datos devueltos por el método GetChunk a las variables de cadena. Sin embargo, Visual Basic suministra un tipo de datos Byte y funciones de carácter como por ejemplo LeftB y RightB. En Microsoft Access 97, es necesario almacenar los datos binarios en una matriz de caracteres en lugar de una variable de cadena y se deben utilizar las funciones de carácter para manipular esos datos.

Declarar los canales DDE como Variant o Long

Si se utiliza la función DDEIniciar (DDEInitiate) para abrir un canal DDE, puede declarar la variable que almacena el número del canal, que es un valor Long (de tipo largo), como un valor Variant o Long. En las versiones 1.x y 2.0 de Microsoft Access, el número de canal era un valor Integer, de forma que es necesario modificar cualquier instrucción de declaraciones en el código que cree variables del tipo Integer para almacenar el número del canal.

La conversión de cadena no funcionará si la cadena contiene un signo de porcentaje (%)

No se puede asignar una cadena que contenga un signo de porcentaje a una variable o un campo que tenga un tipo de dato numérico, como en el siguiente ejemplo:

Dim entX As Double

entX = "10"	' Esto funciona.

entX = "10%"	' Esto devuelve un error.

La propiedad CVent (hWnd)

Si utiliza en el código la propiedad CVent (hWnd) para pasar el controlador de una ventana de un formulario o un informe a una rutina de Windows, debería pasar el valor directamente a la rutina. No se debe asignar, por tanto, el valor de esta propiedad a una variable. Por ejemplo:

If Not IsZoomed(Pantalla.FormularioActivo.hWnd) Then

DoCmd.Maximize

EndIf

En las versiones 1.x y 2.0 de Microsoft Access, la propiedad CVent (hWnd) de un formulario o informe era un valor Integer. En Microsoft Access 97, la propiedad CVent (hWnd) es un valor Long, por lo que debe cambiar el código para que lo acepte.

Objetos de propiedades de DAO frente a objetos de propiedades de  Microsoft Access

No es posible utilizar en el código una variable de objeto para hacer referencia a una propiedad Category. La propiedad Category ya no es compatible con los objetos Formulario (Form), Informe (Report) y Control.

La propiedad Principal (Parent)

En Microsoft Access 97, si utiliza la propiedad Principal (Parent) de un control en el código o en una expresión de un formulario o informe, normalmente devolverá el objeto Formulario o Informe que contiene el control. Por ejemplo, si IdCategoría es un cuadro de texto en el formulario Categorías, el código Forms!Categorías!IdCategoría.Parent devuelve una referencia al formulario Categorías. Hay dos excepciones: para las etiquetas adjuntas, la propiedad Principal (Parent) devuelve el control al que la etiqueta está adjunta; y para los controles en un grupo de opciones, devuelve el control del grupo de opciones.

Llamar al código de los asistentes de Microsoft Access

Si en el código de las aplicaciones de las versiones 1.x o 2.0 llama a procedimientos de los asistentes de Microsoft Access, después de convertir su aplicación es necesario establecer una referencia desde su aplicación a la base de datos de asistentes que contenga los procedimientos que se llaman. Para obtener más información acerca de cómo establecer referencias, consulte Establecer referencias a bibliotecas de tipos.

En Microsoft Access versión 2.0, no hay distinción entre los asistentes y las bibliotecas, de forma que su código global siempre estaba disponible para la base de datos activa. En Microsoft Access 97, los asistentes y otros complementos no son ya tratados como bibliotecas. Además, puesto que los asistentes pueden cambiar en gran medida de una versión de Microsoft Access a la siguiente, es posible que sea necesario volver a escribir parte del código para que se adapte a los cambios después de actualizar a una nueva versión de Microsoft Access.

En el caso del código que ya no se suministra más en los asistentes de Microsoft Access, como por ejemplo el Automarcador, la funcionalidad se ha agregado a Utility.mda, una base de datos de bibliotecas especial que se suministra con Microsoft Access. Cuando se convierte una base de datos a Microsoft Access 97, se agrega automáticamente una referencia a esta biblioteca.

Establecer una referencia a una base de datos de Microsoft Access

Desde Microsoft Access 97 no puede crear una referencia a una base de datos creada con una versión anterior de Microsoft Access. Debe convertir la base de datos a la versión Microsoft Access 97 (versión 8.0) para poder establecer una referencia a ella.

Control de los errores de automatización

En las versiones 1.x y 2.0 de Microsoft Access, los componentes ActiveX  que son compatibles con Automatización (llamado antiguamente servidores de Automatización OLE) devolvían un error individual. Visual Basic permite ahora al componente ActiveX devolver información específica del error que se ha producido. Si su base de datos existente incluye código para tratar un error individual de Automatización, puede que sea necesario actualizar el código para tratar los errores más específicos que serán devueltos ahora.

Los errores de Microsoft Access y la función Error

En Microsoft Access 97, las propiedades del objeto Err se usan para obtener información acerca de los errores.

Cuando se produce un error de Microsoft Access, puede obtener el número de error y la descripción usando las propiedades Number y Description del objeto Err, como en el siguiente ejemplo:

Debug.Print Err.Number, Err.Description

Para devolver información acerca de errores de Microsoft Access, Visual Basic o DAO, use el método AccessError. Con el método AccessError, puede obtener información acerca del error independientemente de si el error ha ocurrido o no en realidad.

Signo de exclamación frente a operador punto cuando se hace referencia a campos DAO

Si en las aplicaciones creadas en las versiones 1.x o 2.0 de Microsoft Access se usa la sintaxis del operador . (punto) para hacer referencia a un objeto Field de un objeto Recordset, será necesario cambiar esas referencias y utilizar la sintaxis del operador ! (signo de exclamación). O, si se prefiere continuar utilizando la sintaxis del operador . (punto), se debe establecer una referencia a la biblioteca de compatibilidad DAO 2.5/3.5 de Microsoft en el cuadro de diálogo Referencias, disponible haciendo clic en Referencias en el menú Herramientas mientras se encuentra en el módulo vista Diseño.

Conversión de controles ActiveX

Si su aplicación contiene controles ActiveX (denominados anteriormente controles OLE o controles personalizados) que se instalaron en la versión 2.0, puede que sea necesario insertar la palabra clave ByVal delante de los argumentos que se vayan a pasar a los procedimientos de evento llamados desde los eventos de control ActiveX, como en el siguiente ejemplo:

Sub CambiarMes_Click(ByVal entAñoActual As Integer)

Para determinar si un argumento necesita ser pasado como valor, haga clic en Compilar todos los módulos en el menú Depuración del módulo vista Diseño. Si se recibe el siguiente mensaje de error, entonces será necesario insertar la palabra clave ByVal delante del argumento: "La declaración del procedimiento de evento no coincide con la declaración de evento que tiene el mismo nombre."

Dado que la comprobación del tipo de argumento se ha mejorado en Microsoft Access 97, los nuevos procedimientos de evento creados para los controles ActiveX tienen insertada de forma automática la palabra clave ByVal cuando sea necesario.

Llamar a los procedimientos de módulos de formularios e informes

En las versiones 1.x y 2.0 de Microsoft Access, no era posible llamar a un procedimiento definido en un formulario o informe desde cualquier parte que no fuera dentro módulo del propio formulario o informe. En Microsoft Access 95 se puede llamar a un procedimiento público en un módulo de un formulario o informe desde cualquier procedimiento que se encuentre en la base de datos activa. Para ello es necesario cualificar al procedimiento con el nombre de clase del módulo del formulario o del informe. Por ejemplo, para llamar a un procedimiento MostrarMensaje que está definido en el módulo del formulario Pedidos, utilizaría la siguiente sintaxis:

Form_Pedidos.MostrarMensaje

Si es posible, es mejor colocar en un módulo estándar los procedimientos que se vayan a llamar desde fuera de un formulario o informe, en lugar de en un módulo de un formulario o informe.

Hacer referencia a los formularios, informes y controles en la ventana Depuración

Cuando se está probando y depurando código, es necesario cualificar totalmente todas las referencias a los objetos que se utilizan en la ventana Depuración, a menos que se haya suspendido la ejecución en un módulo de un formulario o informe. Esto significa que en el panel Inmediato de la ventana Depuración, debe utilizar el código Forms!Categorías!IdCategoría para hacer referencia al control IdCategoría del formulario Categorías en la vista Formulario, en lugar de simplemente IdCategoría, incluso cuando el formulario Categorías sea el formulario activo.

Tampoco es posible utilizar la palabra clave Me en la ventana Depuración para hacer referencia a un objeto en un formulario o informe cuando ese formulario o informe está en la vista Diseño, a menos que haya suspendido la ejecución del código en el formulario o informe.

Convertir formularios e informes que contienen controles ActiveX

Cuando se convierte una base de datos 2.0 de Microsoft Access para que sea utilizada en Microsoft Access 97 (versión 8.0), es posible que los controles ActiveX de los formularios e informes no se conviertan automáticamente. Microsoft Access 2.0 era compatible con los controles OLE de 16 bits, mientras que la versión 8.0 sólo es compatible con los controles ActiveX de 32 bits.

Si está convirtiendo una base de datos con un formulario o informe que tenga una versión de 16 bits de un control ActiveX, y la versión de 32 bits no existe todavía en su sistema, Microsoft Access generará un mensaje de error. Es necesario obtener una versión de 32 bits de cada control ActiveX que desee actualizar y registrarla en el Registro de Windows. A continuación debe guardar el formulario o informe en la base de datos convertida y cerrar y volver a abrir la base de datos.

Activar una base de datos creada con una versión anterior de Microsoft Access

Cuando habilita una base de datos grande creada con una versión 1.x o 2.0 de Microsoft Access, pero no la convierte a Microsoft Access 97, puede que necesite aumentar el tamaño máximo predeterminado de búfer. Para cambiar este valor, abra el Registro de Windows y desplácese hasta la clave \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.0\Engines\Jet 2.x. Cree una nueva clave llamada ISAM, y dentro de esta clave cree un nuevo valor DWORD llamado MaxBufferSize. Establezca este valor a 1024, en base decimal. Si desea más información sobre la modificación del Registro de Windows, consulte la documentación de Microsoft Windows.

Valores horarios en los criterios de consulta

Cuando convierte una base de datos desde una versión 1.x o 2.0 a Microsoft Access 97, las consultas que contienen los criterios basados en valores de horario específicos de los campos Fecha/Hora pueden devolver resultados diferentes de lo que lo hicieron en las versiones anteriores. Esto puede ocurrir también si se vinculan tablas desde una base de datos de la versión 1.x o 2.0 a una base de datos Microsoft Access 97. Sólo se verá afectada la parte horaria de los campos Fecha/Hora.

Funciones de Visual Basic que no son compatibles en expresiones

Las siguientes seis funciones de Visual Basic no se pueden utilizar en expresiones fuera de un procedimiento Sub o Function definido por el usuario:

EOF	Loc
FileAttr	LOF
FreeFile	Seek
Si es necesario utilizar una de estas funciones en una expresión fuera de un procedimiento, se puede llamar a la función desde dentro de una función definida por el usuario que se llame desde la expresión.

Los números de línea en los procedimientos Visual Basic

En los procedimientos Visual Basic, no es posible asignar a las instrucciones números de línea mayores de 65.529. Si su aplicación convertida de la versión 1.x o 2.0 de Microsoft Access contiene números de línea mayores de 65.529, será necesario modificarlos para que se encuentren dentro del intervalo aceptado.

Los botones Procedimiento siguiente y Procedimiento anterior

Los botones Procedimiento siguiente y Procedimiento anterior que se encontraban en la barra de herramientas Módulo en las versiones 1.x y 2.0 no están ya disponibles en Microsoft Access 97. Si se convierte una base de datos de la versión 1.x o 2.0 con una barra de herramientas personalizada que contiene uno de estos botones, no se producirá un error, pero los botones no tendrán efecto cuando se haga clic en ellos.

Error "Memoria insuficiente" al convertir bases de datos grandes

Visual Basic para aplicaciones tiene un límite de 1.082 módulos por base de datos, y los formularios e informes contienen cada uno un módulo. Para resolver este problema, reduzca el número de objetos en la base de datos o divida la aplicación en múltiples bases de datos. Si tiene módulos con gran cantidad de código, considere la utilización de bases de datos de bibliotecas para almacenar el código.

Formato de valores Nulo y de cadenas de longitud cero

En la versión 2.0 de Microsoft Access, puede usar la función Formato (Format) para devolver un valor para una cadena de longitud cero y otro para un valor Nulo, y de forma similar puede usar la propiedad Formato (Format) para dar formato automáticamente a los campos de la tabla en la vista Hoja de datos o a los controles de un formulario o informe. Por ejemplo, puede usar una expresión de formato como la siguiente con la función Formato (Format) para devolver el valor apropiado de la cadena desde el código:

Dim var As Variant, cadX As String

' Asignar valor a cadX y pasarlo a función Format.

var = Format(cadX, "@;ZLS;Null")

En Microsoft Access 97, la comprobación del caso del valor Nulo debe hacerse aparte y luego devolver el valor apropiado basado en el resultado. Por ejemplo, podría usar la función SiInm (IIf) en una expresión con la función Formato (Format), como la siguiente:

var = IIf(IsNull(cadX),"Null", Format(cadX, "@;ZLS"))

Este cambio sólo se aplica al usar la función Formato (Format) para dar formato a un valor dependiendo de si es una cadena de longitud cero o un valor Nulo. Las demás expresiones de formato usadas con la función Formato (Format) continúan funcionando como lo hacían en las versiones anteriores.

Si convierte una base de datos desde una versión 2.0 de Microsoft Access a Microsoft Access 97, necesitará cambiar aquel código o valor de las propiedades que utilicen estos métodos. La propiedad Formato (Format) no se puede usar en la vista Hoja de datos de la tabla para distinguir entre valores Nulo y cadenas de longitud cero.


Compatibilidad de la biblioteca de objetos DAO

Microsoft Access 97 incluye objetos, métodos y propiedades DAO que substituyen a los existentes de las versiones 1.x, 2.0 y 7.0. Mientras que el código en Microsoft Access 97 es compatible con todo el código DAO anterior, las versiones futuras de Microsoft Access puede que no proporcionen compatibilidad para algunos de los objetos, métodos y propiedades anteriores. Las siguientes secciones le ayudarán a que pueda obtener ventajas de las características de compatibilidad hacia atrás de Microsoft Access 97, así como a crear nuevas aplicaciones y modificar las aplicaciones existentes para que estén preparadas para la conversión a versiones futuras de Microsoft Access.

Obtener ventajas de las características de compatibilidad hacia atrás

Si se desea continuar usando en la aplicación las versiones anteriores de los objetos, métodos y propiedades DAO, es necesario que primero establezca una referencia a la Biblioteca de compatibilidad DAO 2.5/3.5 de Microsoft. Las referencias se establecen en el cuadro de diálogo Referencias, disponible haciendo clic en Referencias en el menú Herramientas mientras se encuentra en la vista Diseño de un módulo. La Biblioteca de compatibilidad DAO 2.5/3.5 de Microsoft ofrece compatibilidad hacia atrás completa con las versiones 1.x, 2.0 y 7.0 de Microsoft Access. Se agrega una referencia a esta versión de la biblioteca a las aplicaciones de las versiones 1.x, 2.0 y 7.0 que se convierten a Microsoft Access 97.

La Biblioteca de objetos DAO 3.5 de Microsoft no incluye los objetos, métodos y propiedades anteriores y se selecciona de manera predeterminada cuando se crea una nueva base de datos. Todas las aplicaciones nuevas creadas en Microsoft Access 97 deben hacer referencia sólo a la Biblioteca de objetos DAO 3.5 de Microsoft con el objeto de asegurar que la aplicación no utiliza los métodos anteriores. Además, si la aplicación sólo hace referencia a la Biblioteca de objetos DAO 3.5 de Microsoft, no tendrá que distribuir la Biblioteca de compatibilidad DAO 2.5/3.5 de Microsoft cuando distribuya su aplicación a otros usuarios.

Sugerencia   Si desea comprobar que la aplicación sólo utiliza los objetos, métodos y propiedades de la Biblioteca de objetos DAO 3.5 de Microsoft, puede desactivar la casilla de verificación Biblioteca de compatibilidad DAO 2.5/3.5 de Microsoft en el cuadro de diálogo Referencias, asegurarse que está seleccionado Biblioteca de objetos DAO 3.5 de Microsoft, y luego volver a compilar la aplicación eligiendo Compilar todos los módulos en el menú Depurar en la vista Diseño del módulo. Si la aplicación compila sin errores, no es necesario que mantenga la referencia a la Biblioteca de compatibilidad DAO 2.5/3.5 de Microsoft, con lo que puede estar seguro de que su aplicación funcionará con la siguiente versión de DAO.

Preparar para la conversión a versiones futuras

La siguiente tabla enumera los objetos, métodos y propiedades que no están incluidas en la Biblioteca de objetos DAO 3.5 de Microsoft, así como las características que se han proporcionado para reemplazarlas. Los elementos nuevos de la segunda columna se pueden utilizar para modificar el código escrito en las versiones anteriores de Microsoft Access, de forma que su aplicación estará preparada para la conversión a las versiones futuras de Microsoft Access, cuando los elementos de la primera columna no estén ya disponibles.

Para obtener ejemplos de cómo modificar su código, consulte Ejemplos de conversión de código de acceso a datos (DAO).

Funcionalidad no existente en DAO 3.5	DAO 3.5 recomendados
FreeLocks	Método Idle del objeto DBEngine (no es necesario para las bases de datos de Microsoft Access 97)
SetDefaultWorkspace	Propiedades DefaultUser/DefaultPassword del objeto DBEngine
SetDataAccessOption	Propiedad IniPath del objeto DBEngine
BaseDeDatos.BeginTrans	EspacioDeTrabajo.BeginTrans
BaseDeDatos.CommitTrans	EspacioDeTrabajo.CommitTrans
BaseDeDatos.CreateDynaset	BaseDeDatos.OpenRecordset del tipo dbOpenDynaset
BaseDeDatos.CreateSnapshot	BaseDeDatos.OpenRecordset del tipo dbOpenSnapshot
BaseDeDatos.DeleteQueryDef	Método Delete de la colección QueryDefs
Base de datos.ExecuteSQL	Método BaseDeDatos.Execute y propiedad BaseDeDatos.RecordsAffected
BaseDeDatos.ListTables	Colección BaseDeDatos.TableDefs
BaseDeDatos.OpenQueryDef	Colección BaseDeDatos.QueryDefs
BaseDeDatos.OpenTable	BaseDeDatos.OpenRecordset del tipo dbOpenTable
BaseDeDatos.Rollback	EspacioDeTrabajo.Rollback
Método ListFields de los objetos Table, Dynaset y Snapshot	Colección Recordset.Fields
Tabla.ListIndexes	Colección TableDef.Indexes
QueryDef.CreateDynaset	QueryDef.OpenRecordset
QueryDef.CreateSnapshot	QueryDef.OpenRecordset
QueryDef.ListParameters	Colección QueryDef.Parameters
Objeto Dynaset	Objeto Recordset de tipo Dynaset
Objeto Snapshot	Objeto Recordset de tipo Snapshot
Objeto Table	Objeto Recordset de tipo Tabla
Método CreateDynaset de los objetos Dynaset y QueryDef	Recordset.OpenRecordset con parámetro dbOpenDynaset
Método CreateSnapshot de los objetos Dynaset y QueryDef	Recordset.OpenRecordset con parámetro dbOpenSnapshot


Estilo de las constantes intrínsecas

En Microsoft Access 97, todas las constantes intrínsecas están contenidas en bibliotecas de tipos y son visibles en el Examinador de objetos. Microsoft Access incluye las bibliotecas de tipos para Microsoft Access, Objetos de acceso a datos (DAO) y Visual Basic. Cada una de estas bibliotecas de tipos incluye constantes intrínsecas.

Además, las constantes intrínsecas en Microsoft Access 97 contienen mayúsculas y minúsculas, y partes de la constante son concatenadas en lugar de separadas por el carácter de subrayado. Por ejemplo, la constante A_NORMAL de las versiones 1.x y 2.0 es ahora acNormal.

Las constantes intrínsecas en las bases de datos creadas con las versiones anteriores de Microsoft Access no serán convertidas de forma automática al nuevo formato de las constantes, sino que las antiguas constantes continuarán funcionando sin errores. Sin embargo, se recomienda que utilice el nuevo formato cuando escriba código nuevo.


Convertir combinaciones de teclas de EnviarTeclas (SendKeys)

Si está convirtiendo una base de datos de la versión 1.x o 2.0 a Microsoft Access 97, los cambios en algunos cuadros de diálogo y menús pueden requerir que vuelva a codificar la instrucción SendKeys o la acción EnviarTeclas. Por ejemplo, el submenú Complementos se ha movido desde el menú Archivo al menú Herramientas y los submenús anteriores Importar, Exportar y Adjuntar del menú Archivo han cambiado y son ahora los submenús Obtener datos externos y Guardar como o exportar. Puesto que cambios como éstos pueden seguir produciéndose en cada nueva versión de Microsoft Access, es una buena idea evitar la utilización de la acción EnviarTeclas o la instrucción SendKeys para ejecutar comandos y rellenar cuadros de diálogo cuando sea posible.

Éstas son algunas sugerencias que puede utilizar para evitar el uso de la acción EnviarTeclas o la instrucción SendKeys:

•	Antes de utilizar la acción EnviarTeclas o la instrucción SendKeys para realizar un comando de menú, compruebe que no existe una acción de macro o un método de Visual Basic equivalente. La mayoría de los comandos que se realizan normalmente en una macro o procedimiento tienen una acción o método equivalente. Por ejemplo, ahora se puede utilizar el método Dropdown de un cuadro combinado en lugar del código SendKeys "{F4}".

•	Si un comando de menú no tiene una acción o método equivalente, utilice la acción EjecutarComando en lugar de la acción EnviarTeclas o la instrucción SendKeys para llevarlo a cabo.

•	Evite el uso de la acción EnviarTeclas o la instrucción SendKeys para establecer las opciones en el cuadro de diálogo Opciones. Las nuevas versiones de Microsoft Access tendrán muy probablemente opciones nuevas y cambiadas, de forma que el código de la acción EnviarTeclas o la instrucción SendKeys podría muy fácilmente no funcionar. En su lugar utilice los métodos GetOption y SetOption.

•	Cuando se utiliza la instrucción SendKeys para realizar una acción, considere hacer referencia a las constantes incorporadas en el código o declarar constantes para los valores de su instrucción SendKeys. La definición como constantes de sus pulsaciones de tecla hace que la actualización del código resulte más fácil en el futuro.

•	En Microsoft Access versión 2.0, puede incluir el argumento Pulsaciones de teclas de la acción EnviarTeclas entre comillas, aunque no es imprescindible. Si incluye este argumento entre comillas en las subsiguientes versiones de Microsoft Access, se producirá un error. Para usar comillas en el argumento Pulsaciones de teclas, debe usar dos conjuntos de comillas, como en Ignacio ""Nacho"" López. También se puede producir un error si el argumento Pulsaciones de teclas contiene sintaxis incorrecta, texto mal escrito u otros valores que no sean apropiados para la ventana a la que se envían las pulsaciones de teclas.


Convertir tablas, formularios e informes de Microsoft Access

Se han introducido varios cambios en Microsoft Access 97 que pueden afectar al comportamiento de las aplicaciones de la versión 1.x o 2.0. Las siguientes secciones ofrecen información acerca de esos cambios.

Índices y relaciones

Una tabla de Microsoft Access puede contener hasta 32 índices. Las tablas muy complejas que forman parte de muchas relaciones pueden exceder el límite del índice, con lo que no será capaz de convertir la base de datos que contenga estas tablas. La versión 3.5 del motor de base de datos Microsoft Jet crea índices en ambos lados de las relaciones entre tablas. Si la base de datos no se convierte, elimine algunas relaciones e intente convertir de nuevo la base de datos.

La propiedad LimitarALista (LimitToList) de los cuadros combinados

En Microsoft Access 97, los cuadros combinados aceptan valores Nulos cuando la propiedad LimitarALista (LimitToList) está establecida a True (–1), independientemente de que la lista contenga o no valores Nulos. En la versión 2.0, un cuadro combinado que tuviera la propiedad LimitarALista (LimitToList) establecida a True no aceptaría un valor Nulo a menos que la lista contuviera un valor Nulo. Si se desea evitar que los usuarios introduzcan un valor Nulo usando un cuadro combinado, establezca la propiedad Requerido (Required) del campo de la tabla a Sí.

Activar menús y complementos de los objetos OLE

Con la idea de poner a su disposición funcionalidades adicionales mientras se activan en el sitio objetos OLE, es posible que algunos comandos de menú se hayan movido a un menú que no sea reemplazado cuando se activa un servidor OLE.

Las macros de la aplicación convertida que utilicen una acción EjecutarElementoMenú para ejecutar un comando de menú de la versión 2.0 al activar un servidor OLE, no se verán afectadas por los cambios. Los comandos de la versión 2.0 han sido relacionados con sus equivalentes de Microsoft Access 97.

Hacer referencia a un control en un formulario de sólo lectura

En Microsoft Access 97, no es posible utilizar una expresión para hacer referencia al valor de un control en un formulario de sólo lectura que sea dependiente de un origen de registro en blanco. En las versiones anteriores, la expresión devolvería un valor Nulo. Antes de hacer referencia a un control en un formulario que sea de sólo lectura, debe asegurarse de que el origen del registro del formulario contiene registros.

Campos de fecha y entrada de datos

Si se introduce 3/3 en un campo de tipo Fecha en una hoja de datos de un formulario o una tabla, Microsoft Access 97 rellena automáticamente el año actual. Sin embargo, si se introduce 3/3/ en el mismo campo, Microsoft Access devolverá un mensaje de error. Debe omitir el último delimitador de la fecha de forma que Microsoft Access pueda traducir la fecha al formato adecuado.

Botones creados con el Asistente para botones

Si utilizó el Asistente para botones de comando en las versiones 2.0 o 7.0 de Microsoft Access para generar código que llama a otra aplicación, debe eliminar el botón y volver a crearlo usando el Asistente para botones de comando Microsoft Access 97.

Módulos de clase en formularios e informes

En la versiones anteriores de Microsoft Access, los objetos Form y Report tenían asociados módulos de clase incluso cuando no había código detrás del objeto. En Microsoft Access 97, puede establecer a False la propiedad TieneUnMóduloAsociado (HasModule) del formulario o informe. Cuando la propiedad TieneUnMóduloAsociado (HasModule) se establece a False, el formulario o informe ocupa menos espacio en disco y se carga más rápidamente porque ya no tiene asociado un módulo de clase.

Los informes convertidos de la versión 2.0 tienen márgenes distintos

Puede que encuentre problemas cuando intente imprimir u obtener la vista preliminar de un informe de Microsoft Access 97 que ha sido convertido desde Microsoft Access 2.0 si el informe tiene alguno de los márgenes establecido a 0. Cuando se convierte un informe Microsoft Access 2.0, los márgenes no se establecen a 0; por el contrario, se establecen al margen mínimo para la impresora predeterminada. Esto evita que el informe imprima datos en una zona de la impresora que no sea de impresión.

Para resolver este problema, reduzca el ancho de columna, el espacio entre columnas o el número de columnas en el informe, de tal forma que el ancho de las columnas más el ancho de los márgenes predeterminados sea igual o menor que el ancho del papel.

No se puede usar la propiedad Formato (Format) para distinguir valores Nulos de cadenas de longitud cero

En las versiones 1.x y 2.0, puede usar la propiedad Formato (Format) de un control para mostrar distintos valores Nulos y de cadenas de longitud cero (" "). En Microsoft Access 97, para distinguir entre los valores Nulos y las cadenas de longitud cero en un control de un formulario, establezca la propiedad OrigenDelControl (ControlSource) del control a una expresión que compruebe el caso del valor Nulo. Por ejemplo, para mostrar "Nulo" o "ZLS" en un control, establezca su propiedad OrigenDelControl (ControlSource) a la siguiente expresión:

=SiInm(IsNull([MiControl]), "Null", Format([MiControl], "@;ZLS"))


Control Etiqueta

Las etiquetas de un formulario o informe muestran texto descriptivo como títulos, rótulos o instrucciones breves. Las etiquetas tienen ciertas características:

•	Las etiquetas no muestran valores de campos o expresiones.

•	Las etiquetas siempre son independientes.

•	Las etiquetas no cambian cuando se mueven de un registro a otro.

Control:	Herramienta:
Comentarios

Una etiqueta puede estar adjunta a otro control. Cuando se crea un cuadro de texto, por ejemplo, tiene una etiqueta adjunta que muestra un título para ese cuadro de texto. Esta etiqueta aparece como un encabezado de columna en la vista Hoja de datos de un formulario.

Cuando se crea una etiqueta utilizando la herramienta Etiqueta, la etiqueta es una entidad por sí misma, no está adjunta a ningún otro control. Las etiquetas individuales se utilizan para información como el título de un formulario o informe o para cualquier otro texto descriptivo. Las etiquetas individuales no aparecen en la vista Hoja de datos.


Control Cuadro de texto

Los cuadros de texto de un formulario o informe muestran datos de una tabla, consulta o instrucción SQL. Este tipo de cuadro de texto se llama cuadro de texto dependiente por que es dependiente de los datos contenidos en un campo. Un cuadro de texto puede ser también independiente. Por ejemplo, se puede crear un cuadro de texto independiente para mostrar los resultados de un cálculo o para aceptar lo introducido por un usuario. Los datos de un cuadro de texto independiente no se guardan con la base de datos.

Control:	Herramienta:


Control Casilla de verificación

Una casilla de verificación de un formulario o informe es un control individual que muestra un valor Sí/No de una tabla, consulta o instrucción SQL base.

Control:	Herramienta:
Comentarios

Cuando se selecciona o despeja una casilla de verificación que depende de un campo Sí/No, Microsoft Access muestra el valor contenido en la tabla base de acuerdo con la propiedad Formato (Format) del campo (Sí/No, Verdadero/Falso o Activado/Desactivado).

También se pueden utilizar casillas de verificación en un grupo de opciones para mostrar los valores que se pueden elegir.

También es posible utilizar una casilla de verificación independiente en un cuadro de diálogo personalizado para aceptar lo introducido por el usuario.


Control Botón de alternar

Un botón de alternar de un formulario es un control individual que se utiliza para mostrar un valor Sí/No de una tabla, consulta o instrucción SQL base.

Control:	Herramienta:
Comentarios

Al hacer clic en un botón de alternar que depende de un campo Sí/No, Microsoft Access muestra el valor contenido en la tabla base de acuerdo con la propiedad Formato (Format) del campo (Sí/No, Verdadero/Falso o Activado/Desactivado).

Los botones de alternar son muy útiles cuando se utilizan en un grupo de opciones con otros botones.

También se puede utilizar un botón de alternar en un cuadro de diálogo personalizado para aceptar lo que introduce el usuario.


Control Botón de opción

Un botón de opción de un formulario o informe es un control individual que se utiliza para mostrar un valor Sí/No de una tabla, consulta o instrucción SQL base.

Control:	Herramienta:
Comentarios

Cuando se selecciona o despeja un botón de opción que depende de un campo Sí/No, Microsoft Access muestra el valor contenido en la tabla base de acuerdo con la propiedad Formato (Format) del campo (Sí/No, Verdadero/Falso o Activado/Desactivado).

También se pueden utilizar los botones de opción en un grupo de opciones para mostrar los valores que se pueden elegir.

También se puede utilizar un botón de opción independiente en un cuadro de diálogo personalizado para aceptar lo que introduce el usuario.


Control Grupo de opciones

Un grupo de opciones de un formulario o informe muestra un conjunto limitado de alternativas. Un grupo de opciones facilita la selección de un valor, ya que se puede hacer simplemente clic en el valor que se desea. Sólo se puede seleccionar una opción del grupo a la vez.

Un grupo de opciones consiste en un marco de grupo y un conjunto de casillas de verificación, botones de alternar o botones de opción.

Control:	Herramienta:
Comentarios

Si un grupo de opciones es dependiente de un campo, sólo es dependiente del campo el marco del grupo en sí, no las casillas de verificación, botones de alternar o botones de opción que hay dentro del marco. En lugar de establecer la propiedad OrigenDelControl (ControlSource) para cada control del grupo de opciones, se establece la propiedad ValorDeLaOpción (OptionValue) de cada casilla de verificación, botón de alternar o botón de opción a un número que tenga significado para el campo del que depende el marco del grupo. Cuando se selecciona una opción de un grupo de opciones, Microsoft Access establece el valor del campo del que depende el grupo de opciones al valor de la propiedad ValorDeLaOpción (OptionValue) de la opción seleccionada.

Nota   La propiedad ValorDeLaOpción (OptionValue) se establece a un número porque el valor de un grupo de opciones sólo puede ser un número, no texto. Microsoft Access almacena este número en la tabla base. En el ejemplo anterior, si desea mostrar el nombre de la compañía de envíos en lugar de un número en la tabla Pedidos, puede crear otra tabla llamada Compañías de envíos que almacene los nombres de las compañías de envíos y luego convertir el campo FormaEnvío de la tabla Pedidos en un campo de búsqueda que busca los datos en la tabla Compañías de envíos.

Un grupo de opciones se puede establecer también a una expresión o puede ser independiente. Un grupo de opciones independiente se puede utilizar en un cuadro de diálogo personalizado para aceptar lo que introduce el usuario y efectuar luego una acción basándose en los datos introducidos.


Control Botón de comando

Un botón de comando de un formulario puede iniciar una acción o conjunto de acciones. Por ejemplo, se puede crear un botón de comando que abra otro formulario. Para que el botón de comando haga algo, se escribe una macro o procedimiento de evento que se adjunta a la propiedad AlHacerClic (OnClick) del botón.

Control:	Herramienta:
Comentarios

Se puede mostrar texto en un botón de comando estableciendo su propiedad Título (Caption) o se puede mostrar un dibujo estableciendo su propiedad Imagen (Picture).

Sugerencia   Se pueden crear más de 30 tipos diferentes de botones de comando con el Asistente para botones de comando. Cuando utiliza el Asistente para botones de comando, Microsoft Access crea el botón y el procedimiento de evento por usted.


Control Cuadro de lista

El control cuadro de lista muestra una lista de valores o alternativas. En muchos casos, es más fácil y rápido seleccionar un valor de una lista que recordar un valor para escribirlo. Una lista de posibilidades ayuda también a asegurar que el valor que se introduce en un campo es correcto.

Control:	Herramienta:
La lista contenida en un cuadro de lista consiste en filas y datos. Las filas pueden tener una o más columnas, que pueden aparecer con o sin encabezados.

Comentarios

Si un cuadro de lista de varias columnas es dependiente, Microsoft Access almacena los valores de una de las columnas.

Se puede utilizar un cuadro de lista independiente para almacenar un valor que se puede utilizar con otro control. Por ejemplo, se podría utilizar un cuadro de lista independiente para limitar los valores contenidos en otro cuadro de lista o en un cuadro de diálogo personalizado. También se podría utilizar un cuadro de lista independiente para buscar un registro basándose en el valor seleccionado en el cuadro de lista.

Si no hay espacio en el formulario para mostrar un cuadro de lista o si desea poder escribir nuevos valores además de seleccionar valores de una lista, utilice un cuadro combinado en lugar de un cuadro de lista.


Control Línea

El control línea muestra una línea horizontal, vertical o diagonal en un formulario o informe.

Control:	Herramienta:
Comentarios

Se puede utilizar Ancho del borde [image] para cambiar el ancho de la línea. Se puede utilizar Color del borde [image] para cambiar el color del borde o hacerlo transparente. Se puede cambiar el estilo de línea del borde (puntos, guiones, etc.) utilizando la propiedad EstiloDeLosBordes (BorderStyle).


Control Rectángulo

El control rectángulo muestra un rectángulo en un formulario o informe.

Control:	Herramienta:
Comentarios

Se puede mover un rectángulo y los controles que contiene como una sola unidad arrastrando el puntero del mouse diagonalmente a lo largo de todo el rectángulo para seleccionar todos los controles. Con ello la selección completa se puede mover a una nueva posición.


Control Marco de objeto dependiente

Un control marco de objeto dependiente muestra una imagen, un gráfico o cualquier objeto OLE almacenado en una tabla de base de datos de Microsoft Access. Por ejemplo, si almacena fotos de los empleados en una tabla de Microsoft Access, puede utilizar un marco de objeto dependiente para mostrar esas imágenes en un formulario o informe.

Control:	Herramienta:
Comentarios

Este tipo de control permite crear o editar el objeto desde dentro del formulario o informe utilizando el servidor OLE.

Un marco de objeto dependiente es dependiente de un campo contenido en una tabla base.

El campo de la tabla base del que depende el marco de objeto dependiente, tiene que ser del tipo de datos Objeto OLE.

El objeto de un marco de objeto dependiente es diferente para cada registro. El marco de objeto dependiente puede mostrar objetos vinculados o incrustados. Si desea mostrar objetos que no están almacenados en una tabla base, utilice un marco de objeto independiente o un control imagen.


Control Gráfico

El control gráfico se puede utilizar para incrustar un gráfico que muestra datos de Microsoft Access desde un formulario o informe. Luego se puede editar el gráfico utilizando Microsoft Graph desde el formulario o informe.

Control:

Comentarios

Cuando coloca un control gráfico en un formulario o informe, Microsoft Access muestra el Asistente de gráficos para ayudarle a crear el gráfico.

Nota   Para incrustar o vincular un gráfico que contiene datos de otras aplicaciones, utilice un control marco de objeto independiente o marco de objeto dependiente.


Control Cuadro combinado

El control cuadro combinado combina las características de un cuadro de texto y un cuadro de lista. Utilice un cuadro combinado cuando desee tener la opción de escribir un valor o seleccionar un valor de una lista predefinida.

Control:	Herramienta:
Comentarios

En la vista Formulario, Microsoft Access no muestra la lista hasta que se hace clic en la flecha del cuadro combinado.

Si tiene el Asistente para controles activado antes de seleccionar la herramienta cuadro combinado, puede crear un cuadro combinado con un asistente. Para activar o desactivar el Asistente para controles, haga clic en la herramienta Asistente para controles [image] en el cuadro de herramientas.

El valor de la propiedad LimitarALista (LimitToList) determina si se pueden introducir valores que no están en la lista.

La lista puede ser de una o varias columnas y las columnas pueden aparecer con o sin encabezados.


Control Salto de página

El control salto de página marca el inicio de una nueva pantalla o página impresa en un formulario o informe.

Control:	Herramienta:
Comentarios

En un formulario, un salto de página sólo está activo cuando se establece la propiedad PresentaciónPredeterminada (DefaultView) del formulario a Formulario individual. Los saltos de página no afectan a la hoja de datos del formulario.

En la vista Formulario, presione la tecla REPÁG o AVPÁG para moverse al salto de página anterior o al siguiente.

Coloque los saltos de página encima o debajo de otros controles. Colocar un salto de página en la misma línea que otro control divide los datos de ese control.


Control Subformulario/Subinforme

El control subformulario/subinforme incrusta un formulario en otro o un informe en otro.

Control:	Herramienta:
Por ejemplo, puede utilizar un formulario con un subformulario para presentar relaciones uno a varios, como una categoría de productos con los elementos que están englobados en esa categoría. En este caso, el formulario principal puede mostrar la Id, nombre y descripción de la categoría; el subformulario puede mostrar los productos disponibles en esa categoría.

Sugerencia   En lugar de crear el formulario principal y agregarle luego el control subformulario, puede crear el formulario principal y el subformulario con un asistente simultáneamente. También puede crear un subformulario o subinforme arrastrando un formulario o informe existente desde la ventana Base de datos hasta el formulario o informe principal.


Control Marco de objeto independiente

El control marco de objeto independiente muestra una imagen, gráfico o cualquier objeto OLE que no está almacenado en una tabla. Por ejemplo, se puede utilizar un marco de objeto independiente para mostrar un gráfico que se ha creado y guardado en Microsoft Graph.

Control:	Herramienta:
Comentarios

Este control permite crear o editar el objeto desde un formulario o informe de Microsoft Access utilizando la aplicación en que se ha creado originalmente el objeto.

Para mostrar objetos que están almacenados en una base de datos de Microsoft Access, utilice un control marco de objeto dependiente.

El objeto contenido en un marco de objeto independiente es el mismo para todos los registros.

Un marco de objeto independiente puede mostrar objetos vinculados o incrustados.

Sugerencia   Puede utilizar el control marco de objeto independiente o un control imagen para mostrar imágenes independientes en un formulario o informe. La ventaja de utilizar el marco de objeto independiente es que se puede editar el objeto directamente desde el formulario o informe. La ventaja de utilizar el control imagen es que es más rápido de mostrar.


Formulario

Un formulario es un objeto de base de datos de Microsoft Access en el que se colocan controles para efectuar acciones o para introducir datos en los campos, mostrarlos y editarlos.


Sección de un formulario

Una sección de un formulario es una parte de un formulario como un encabezado, pie de página o sección de detalle.

Se pueden establecer propiedades de sección que son atributos de un formulario que afectan a la apariencia o comportamiento de esa sección. Por ejemplo, se puede establecer la propiedad Autoextensible (CanGrow) a especificar si la sección se extenderá verticalmente para imprimir todos los datos que contiene la sección. Las propiedades de sección se establecen en la vista Diseño del formulario.


Informe

Un informe es un objeto de base de datos de Microsoft Access que presenta información con formato y organización de acuerdo con sus especificaciones. Ejemplos de informes son resúmenes, listas de teléfonos y etiquetas para el correo.


Sección de un informe

Una sección de informe es una parte de un informe como un encabezado, pie de página o sección de detalle.

Se pueden establecer propiedades de sección de un informe que son atributos de un informe que afectan a la apariencia o comportamiento de una sección específica. Por ejemplo, se puede establecer la propiedad Autoextensible (CanGrow) a especificar si la sección se extenderá verticalmente para imprimir todos los datos que contiene la sección. Las propiedades de sección se establecen en la vista Diseño del informe.


Índice

Un índice es una característica de Microsoft Access que acelera la búsqueda y clasificación de una tabla. Se puede crear un índice para un campo en la ventana Índices de la vista Diseño de la tabla, o estableciendo la propiedad Indexado del campo a Sí.

Nota   La clave primaria de una tabla se indexa automáticamente y los campos cuyo tipo de datos es Memo u Objeto OLE no se pueden indexar.


Control Imagen

El control imagen puede agregar una imagen a un formulario o informe. Por ejemplo, se puede incluir un control imagen para un logo sobre un informe Factura.

Control:	Herramienta:
Comentarios

Se puede utilizar el control imagen o un marco de objeto independiente para imágenes independientes. La ventaja de utilizar el control imagen es que es más rápido de mostrar. La ventaja de utilizar el marco de objeto independiente es que se puede editar el objeto directamente desde el formulario o informe.


Control dependiente

Un control dependiente es un control de un formulario o informe que obtiene su contenido de un campo de una tabla, consulta o instrucción SQL base. (La propiedad OrigenDelControl (ControlSource) del control se establece a un nombre de campo de la tabla, consulta o instrucción SQL.) Por ejemplo, un cuadro de texto que muestra el apellido de un empleado es dependiente del campo Apellido de la tabla Empleados.


Cuadro Ordenar y agrupar

El cuadro Ordenar y agrupar especifica el orden de los datos y define los niveles de grupos de un informe.

Para mostrar el cuadro Ordenar y agrupar, haga clic en Ordenar y agrupar [image] en la barra de herramientas.


Tabla

Una tabla es la estructura fundamental de un sistema de control de base de datos relacional. En Microsoft Access, una tabla es un objeto que almacena datos en registros (filas) y campos (columnas). Los datos suelen estar relacionados con una categoría determinada, como empleados o pedidos.


Generador de colores

El generador de colores es una herramienta de Microsoft Access que se utiliza para seleccionar colores de la paleta o para crear colores personalizados que se pueden guardar y utilizar en formularios e informes.

Para ejecutar el generador, haga clic en el botón Generar [image] que está al lado de la propiedad correspondiente en la hoja de propiedades.


Campo de consulta

Un campo de consulta representa datos de una tabla vinculada a la consulta. De forma predeterminada, un campo de consulta hereda todas las propiedades que tiene en la tabla o consulta base. Por ejemplo, si el diseño de una tabla especifica el formato de presentación del campo Fecha de pedido como la Fecha media de la propiedad Formato (Format) del campo, el campo Fecha de pedido tiene en el conjunto de registros de la consulta el formato de Fecha media. Como las propiedades del campo base son las predeterminadas, no se muestran en la hoja de propiedades.

Si se cambia una propiedad de campo en el diseño de la tabla, el campo de consulta hereda automáticamente el cambio. Pero si se cambia una propiedad en la consulta, no se tiene en cuenta el valor de la propiedad del diseño de la tabla. Si se cambia posteriormente la propiedad en el diseño de la tabla, el cambio no se refleja en la consulta.

Las propiedades de los campos de consulta se establecen en la ventana Propiedades del campo de la vista Diseño de la consulta.

Para abrir la ventana Propiedades del campo de la vista Diseño de la consulta, haga clic en Propiedades [image] en la barra de herramientas Diseño de la consulta.


Campo de una tabla

Los campos de tablas son piezas individuales de información que forman un registro dentro de una tabla. Se puede controlar la apariencia de los datos, especificar valores predeterminados y acelerar la búsqueda y clasificación estableciendo las propiedades de los campos en la sección Propiedades del campo de la vista Diseño de la tabla.

Microsoft Access usa las propiedades de los campos cuando se ven o editan los datos. Por ejemplo, las propiedades Formato (Format), MáscaraDeEntrada (InputMask) y Título (Caption) que se establezcan, afectan a la apariencia de las bases de datos de tablas y consultas. Los controles de formularios e informes nuevos basados en la tabla heredan estas propiedades de forma predeterminada. Se pueden establecer otras propiedades para establecer reglas para los datos o para requerir entrada de datos en los campos, lo que Microsoft Access exige siempre que se agregan o editan datos de una tabla.

Para abrir una tabla en la vista Diseño de la tabla, vaya a la ventana Base de datos, haga clic en la ficha Tablas, seleccione la tabla que desea abrir y haga clic en Diseño.


Consulta de acciones

Una consulta de acciones modifica o copia datos. Las consultas de acciones incluyen consultas de agregar, eliminar, crear tabla y actualizar. Sin embargo, una consulta de selección no copia ni modifica datos; hace una pregunta y devuelve un conjunto de registros.

Tipo de consulta de acción	Descripción
Datos anexados	Agrega los registros del conjunto de resultados de la consulta al final de una tabla existente.
Eliminación	Elimina un conjunto de filas que coinciden con los criterios que se especifiquen.
Creación de tabla	Crea una nueva tabla a partir del conjunto de resultados de una consulta existente.
Actualización	Cambia un conjunto de registros de acuerdo con los criterios que se especifiquen.


Consulta de tabla de referencias cruzadas

Una consulta de tabla de referencias cruzadas calcula totales resumidos basándose en los valores de cada fila y columna. Calcula una suma, una media, un recuento u otros tipos de totales de los registros y luego agrupa el resultado en dos tipos de información: uno hacia abajo, en el lado izquierdo de la hoja de datos y otro a lo largo de la parte superior. Por ejemplo, la consulta Pedidos trimestrales por producto de la base de datos de ejemplo Neptuno es una consulta de tabla de referencias cruzadas.


Consulta de parámetros

Una consulta de parámetros, que es un tipo de consulta de selección, extiende la flexibilidad de otra consulta pidiendo que se introduzcan ciertos criterios cada vez que se ejecuta la consulta. Una consulta de parámetros no es, hablando estrictamente, un tipo diferente de consulta, sino que extiende la flexibilidad de otras consultas.


Consulta de selección

Una consulta de selección hace preguntas acerca de los datos almacenados en la base de datos y devuelve el resultado de la consulta sin modificar los datos. Cuando aparece el conjunto de resultados, se pueden ver los datos de las tablas bases y modificarlos en algunos casos. Sin embargo, una consulta de acción no efectúa cambios en los datos.


Consulta específica de SQL

Una consulta específica de SQL es aquella que se puede crear solamente escribiendo una instrucción SQL en la vista SQL. Las consultas de unión, paso a través y definición de datos son consultas específicas de SQL.

Tipo de consulta específica de SQL	Descripción
Unión	Consulta de selección específica de SQL que combina los campos correspondientes de dos o más tablas o consultas en un campo. Por ejemplo, el resultado de una consulta de unión de la tabla Clientes y la tabla Proveedores es una copia que contiene todos los registros especificados de la tabla Clientes y la tabla Proveedores.
Paso a través	Consulta específica de SQL que envía comandos directamente a un servidor de base de datos SQL (como Microsoft SQL Server). Con las consultas de paso a través, se trabaja con las tablas en el servidor en lugar de vincular las tablas a la base de datos de Microsoft Access.
Definición de datos	Consulta específica de SQL que puede crear o eliminar un índice o crear, modificar o eliminar una tabla.


Control Ficha

Un control ficha contiene páginas múltiples en las que se pueden colocar otros controles, como cuadros de texto o botones de opción. Cuando un usuario hace clic en la ficha correspondiente, esa página se convierte en la página activa.

Con el control ficha, se puede construir un único formulario o cuadro de diálogo que contiene varias fichas diferentes y agrupar opciones o datos similares en cada página de la ficha. Por ejemplo, se podría utilizar un control ficha en un formulario Empleados para separar información general y personal.

Control:	Herramienta:


Control ActiveX

Además de los controles incorporados que aparecen en el cuadro de herramientas, Microsoft Access soporta controles ActiveX (conocidos como personalizados o controles OLE). Un control ActiveX, como un control incorporado, es un objeto que coloca en un formulario para permitir o mejorar la interacción del usuario con la aplicación. Los controles ActiveX tiene eventos y pueden ser incorporados en otros controles. Estos controles tiene la extensión .ocx. El control Calendar es un ejemplo de control ActiveX.

Control:	Herramienta:


Página (Page)

Un objeto Página (Page) corresponde a una página individual en un control ficha.

Cada objeto Página (Page) puede conteneruno o más controles, como cuadros de texto o botones de opción. Los controles en un objeto Página (Page) pertenecen a la colección Controles (Controls) de ese objeto Página (Page). Para trabajar con un control en un objeto Página (Page), debe referirse a dicho control dentro de la colección Controles (Controls) de ese objeto Página (Page).

Con el control ficha, puede construir un formulario o cuadro de diálogo que contenga muchas fichas diferentes, y agrupar opciones parecidas o datos en la página de cada ficha. Por ejemplo, podría usar un control ficha en un formulario Empleados para separar información general y personal.

Control:	Herramienta:


Elementos del lenguaje de Microsoft Access aplicables a los controles ActiveX

Además de las propiedades, métodos y eventos específicos de un control ActiveX, algunas de las propiedades, métodos y eventos existentes de Microsoft Access también son aplicables a los controles ActiveX. Para obtener información acerca del funcionamientos de estos elementos del lenguaje, vea el tema de Microsoft Access correspondiente a cada elemento.

Propiedades

Las siguientes propiedades de Microsoft Access son aplicables a los controles ActiveX, y están disponibles en la hoja de propiedades de Microsoft Access:

Activado (Enabled) Al actualizar (OnUpdated) Al entrar (OnEnter) Al perder el enfoque (OnLostFocus) Al recibir el enfoque (OnGotFocus) Al salir (OnExit) Altura (Height) Ancho de los bordes (BorderWidth) Anchura (Width) Bloqueado (Locked) (sólo disponibles en los controles ActiveX que permitan ser ligados)	Clase (Class) Clase OLE (OLEClass) Color de los bordes (BorderColor) Efecto especial (SpecialEffect) Estilo de los bordes (BorderStyle) Id. del contexto de Ayuda (HelpContextID) Índice de tabulación (TabIndex) Información adicional (Tag) Izquierda (Left) Mostrar cuando (DisplayWhen)	Nombre (Name) Object OrigenDelControl (ControlSource) (sólo disponibles en los controles ActiveX que permitan controles dependientes) Punto de tabulación (TabStop) Superior (Top) Texto de Ayuda del control (ControlTipText) Verbo (Verb) Visible
Las siguientes propiedades de Microsoft Access se aplican a los controles ActiveX, y sólo están disponibles en una macro o en Visual Basic:

ControlType	EnLaSelección (InSelection)	Principal (Parent)
PrefijoProcEvento (EventProcPrefix)	ObjectVerbsCount	Sección (Section)
Eventos

Los siguientes eventos de Microsoft Access son aplicables a los controles ActiveX:

Enter	GotFocus	Updated
Exit	LostFocus
Métodos

Los siguientes métodos de Microsoft Access son aplicables a los controles ActiveX:

SetFocus	SizeToFit


El cuadro de diálogo Propiedades personalizadas de los controles ActiveX

Al establecer las propiedades de un control ActiveX, puede necesitar o preferir el uso del cuadro de diálogo de propiedades personalizadas del control. Este cuadro de diálogo de propiedades personalizadas ofrece una alternativa a la lista de propiedades de la hoja de propiedades de Microsoft Access para establecer las propiedades del control ActiveX en la vista Diseño.

Dos modos de establecer las propiedades

La razón de ser del cuadro de diálogo de propiedades personalizadas es que no todas las aplicaciones que usan controles ActiveX ofrecen una hoja de propiedades como la de Microsoft Access. El cuadro de diálogo de propiedades personalizadas ofrece una interfaz para establecer las propiedades clave del control sea cual sea la interfaz suministrada por la aplicación.

Para algunas propiedades de los controles ActiveX, es posible elegir establecer las propiedades en:

•	La hoja de propiedades de Microsoft Access.

•	El cuadro de diálogo de propiedades personalizadas del control ActiveX.

En algunos casos, el cuadro de diálogo de propiedades personalizadas es el único medio disponible para establecer una propiedad en la vista Diseño. Ésta es normalmente la situación cuando la interfaz necesaria para establecer una propiedad no funciona dentro de la hoja de propiedades de Microsoft Access. Por ejemplo, la propiedad FuenteDeCuadrícula (GridFont) del control Calendar tiene varios argumentos; no es posible establecer más de un argumento para cada propiedad en la hoja de propiedades de Microsoft Access.

Localizar el Cuadro de diálogo de propiedades personalizadas

No todos los controles ActiveX ofrecen un cuadro de diálogo de propiedades personalizadas. Para ver si un control ofrece este cuadro de diálogo de propiedades personalizadas, busque la propiedad Personalizado (Custom) en la hoja de propiedades de Microsoft Access para este control. Si la lista de propiedades incluye Personalizado, entonces el control dispone de cuadro de diálogo de propiedades personalizadas.

Utilización del Cuadro de diálogo de propiedades personalizadas

Después de hacer clic en el cuadro de la propiedad Personalizado (Custom) en la hoja de propiedades de Microsoft Access, haga clic en el botón Generar [image] situado a la derecha del cuadro de la propiedad para mostrar el cuadro de diálogo de propiedades personalizadas del control, a menudo presentada en forma de cuadro de diálogo con fichas. Seleccione la ficha que contenga la interfaz para las propiedades que desee establecer.

Después de haber realizado cambios en una ficha, normalmente es posible aplicar estos cambios inmediatamente haciendo clic en el botón Aplicar (si está presente). Puede hacer clic en otras fichas para establecer otras propiedades según sus necesidades. Para confirmar todos los cambios en el cuadro de diálogo de propiedades personalizadas, haga clic en el botón Aceptar. Para volver a la hoja de propiedades de Microsoft Access sin cambiar los valores de ninguna propiedad, haga clic en el botón Cancelar.

También es posible ver el cuadro de diálogo de propiedades personalizadas haciendo clic en el subcomando Propiedades del comando Objeto del control ActiveX (por ejemplo, Objeto de Calendar) en el menú Edición, o haciendo clic en este mismo subcomando en el menú contextual del control ActiveX. Además, algunas propiedades de la hoja de propiedades de Microsoft Access para el control ActiveX, como la propiedad ColorDeFuenteDeCuadrícula (GridFontColor) del control Calendar, disponen de un botón Generar a la derecha del cuadro de la propiedad. Al hacer clic en el botón Generar, se presenta el cuadro de diálogo de propiedades personalizadas, con la ficha correspondiente ya seleccionada (por ejemplo, Colores).


Cómo ver el cuadro Acerca de para un control ActiveX

Para ver un cuadro Acerca de que muestra la versión e información sobre los derechos de autor de un control ActiveX, haga clic en el cuadro de la propiedad Acerca de en la hoja de propiedades de Microsoft Access. Después haga clic en el botón Generar [image] situado a la derecha del cuadro de la propiedad.


Información acerca de las propiedades, métodos y eventos de un control ActiveX

Este tema contiene información de utilidad para configurar y utilizar los elementos del lenguaje de los controles ActiveX y enuncia algunas características nuevas de los controles ActiveX en Microsoft Access 95 y Microsoft Access 97.

Generalidades

Cuando se usan controles ActiveX con Microsoft Access 95, ya no es necesario utilizar la propiedad Object para hacer referencia a las propiedades y a los métodos en expresiones. Por ejemplo, las dos líneas siguientes son normalmente equivalentes:

ActiveXCtl0.Object.MonthLength = 0

ActiveXCtl0.MonthLength = 0

La única excepción es cuando el nombre del elemento del lenguaje del control ActiveX coincide con el de un elemento del lenguaje de Microsoft Access que también se aplica al control ActiveX. En este caso, es preciso seguir utilizando la sintaxis .Object.

Las variables de los controles ActiveX sólo pueden ser declaradas como de tipo Control; no pueden ser de un tipo más específico, tal como Calendar.

Propiedades

Las propiedades de los controles ActiveX ahora aparecen en la hoja de propiedades de Microsoft Access. Es posible establecer la mayoría de las propiedades tanto en el cuadro de diálogo de propiedades personalizadas del control ActiveX como en la hoja de propiedades de Microsoft Access.

Nota    Las propiedades del control ActiveX no se enumeran en la colección Properties. El único modo de tener acceso a estas propiedades es utilizando la sintaxis mostrada en la sección anterior.

Eventos

Para eventos de Microsoft Access como Enter que se aplican a los controles ActiveX, es posible ejecutar una macro o un procedimiento de evento cuando sucede el evento estableciendo la propiedad de evento al nombre de la macro o a [Procedimiento de evento]. Sin embargo, para eventos específicos de los controles ActiveX como el evento NewMonth del control Calendar, es necesario entrar en el módulo del formulario en la vista Diseño, seleccionar el nombre del control ActiveX en el cuadro Objecto, y seleccionar el evento en el cuadro Procedimiento. De este modo se crea un procedimiento de evento para el evento del control ActiveX que se ejecuta cada vez que produce el evento. Si desea crear usted mismo el procedimiento de evento, también puede copiar la sintaxis creada en este caso para el procedimiento de evento.

Si un evento de Microsoft Access y un evento de un control ActiveX con el mismo nombre se aplican a un objeto control ActiveX, Microsoft Access agrega "Object" al evento del control ActiveX en el cuadro de lista desplegable Procedimiento. Esto permite la ejecución de un procedimiento distinto cuando sucede cada evento.


Comparación de tipos de datos

El motor de base de datos Microsoft Jet reconoce varios conjuntos de tipos de datos que se superponen. En Microsoft Access hay cuatro contextos diferentes en los que puede que se necesite indicar un tipo de datos: en la vista Diseño de una tabla, en el cuadro de diálogo Parámetros de la consulta, en Visual Basic y en la vista SQL de una consulta.

En la tabla siguiente se comparan los cinco conjuntos de tipos de datos que corresponden a cada contexto. En la primera columna aparecen los valores de la propiedad Tipo (Type) disponibles en la vista Diseño de una tabla y los cinco valores de la propiedad Tamaño del campo para el tipo de datos Numérico. En la segunda columna se relacionan los correspondientes tipos de datos de parámetros de consulta disponibles para diseñar consultas de parámetros en el cuadro de diálogo Parámetros de la consulta. En la tercera columna se encuentran los tipos de datos de Visual Basic correspondientes. La cuarta columna contiene los tipos de datos de objetos del Campo objeto de acceso a datos (DAO). En la quinta columna aparecen los tipos de datos del motor de base de datos Jet SQL definidos por el motor de base de datos Jet, junto con sus sinónimos válidos.

Campos de tabla	Parámetros  de consulta	Visual Basic	Constantes de la  propiedad Type  del objeto de un  campo DAO	Motor de base de datos Microsoft Jet SQL y sinónimos
No es compatible	Binario	No es compatible	No es compatible	BINARY (Ver notas) (Sinónimo: VARBINARY)
Sí/No	Sí/No	Boolean	dbBoolean	BOOLEAN (Sinónimos: BIT, LOGICAL, LOGICAL1, YESNO)
Numérico (TamañoDelCampo = Byte)	Byte	Byte	dbByte	BYTE (Sinónimo: INTEGER1)
Autonumérico (TamañoDelCampo = Entero largo)	Entero largo	Long	dbLong	COUNTER (Sinónimo: AUTOINCREMENT)
Moneda	Moneda	Currency	dbCurrency	CURRENCY (Sinónimo: MONEY)
Fecha/Hora	Fecha/Hora	Date	dbDate	DATETIME (Sinónimos: DATE, TIME, TIMESTAMP)
Numérico (TamañoDelCampo = Doble)	Doble	Double	dbDouble	DOUBLE (Sinónimos: FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC)
Numérico o Autonumérico (TamañoDelCampo = ID duplicada)	ID duplicada	No es compatible	dbGUID	GUID
Numérico (TamañoDelCampo = Entero largo)	Entero largo	Long	dbLong	LONG (Ver notas) (Sinónimos: INT, INTEGER, INTEGER4)
Objeto OLE	Objeto OLE	String	dbLongBinary	LONGBINARY (Sinónimos: GENERAL, OLEOBJECT)
Memo	Memo	String	dbMemo	LONGTEXT (Sinónimos: LONGCHAR, MEMO, NOTE)
Numérico (TamañoDelCampo = Simple)	Simple	Single	dbSingle	SINGLE (Sinónimos: FLOAT4, IEEESINGLE, REAL)
Numérico (TamañoDelCampo = Entero)	Entero	Integer	dbInteger	SHORT (Ver notas) (Sinónimos: INTEGER2, SMALLINT)
Texto	Texto	String	dbText	TEXT (Sinónimos: ALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR)
Hipervínculo	Memo	String	dbMemo	LONGTEXT (Sinónimos: LONGCHAR, MEMO, NOTE)
No es compatible	Valor	Variant	No es compatible	VALUE (Ver notas)
Notas

•	Microsoft Access no utiliza el tipo de datos BINARY. Sólo lo reconoce cuando se utiliza en consultas de tablas vinculadas de otros productos de bases de datos que admiten el tipo de datos BINARY.

•	El tipo de datos INTEGER del motor de base de datos Jet SQL no se corresponde con el tipo de datos Entero de los campos de las tablas o de los parámetros de consulta, ni con el tipo de datos Integer de Visual Basic. Por el contrario, en SQL, el tipo de datos INTEGER se corresponde con el tipo de datos Entero largo para los campos de tablas y los parámetros de consulta y con el tipo de datos Long en Visual Basic.

•	La palabra clave VALUE no representa un tipo de datos definido por el motor de base de datos Jet. Sin embargo, en las consultas de Microsoft Access o de SQL, la palabra clave VALUE puede ser considerada como sinónimo válido del tipo de datos Variant de Visual Basic.

•	Si configura el tipo de datos de un objeto de acceso a datos (DAO) en código Visual Basic, debe configurar la propiedad Tipo (Type) del objeto.


Ejemplos de conversión de código de acceso a datos (DAO)

Microsoft Access incluye la versión 3.5 del motor de base de datos Microsoft Jet, que presenta varios objetos, métodos y propiedades que pueden mejorar sus aplicaciones existentes. Los siguientes ejemplos muestran cómo convertir construcciones de código de bases de datos de Microsoft Access creadas con versiones anteriores del motor de base de datos Jet para aprovechar estas nuevas características.

Establecer una referencia a la base de datos actual

Versión	Ejemplo
1.x	Dim dbs As Database Set dbs = CurrentDb
2.x	Dim dbs As Database Set dbs = DBEngine.Workspaces(0).Databases(0)
o	Dim dbs As Database Set dbs = DBEngine(0)(0)
7.0 o posterior	Dim dbs As Database Set dbs = CurrentDb
Nota   En Microsoft Access, la base de datos actual es la base de datos predeterminada en la colección Databases, por eso todavía se puede utilizar la sintaxis DBEngine(0)(0) para devolver una variable de objeto Database que apunte a la base de datos actual. Pero la mejor forma de devolver esta variable de objeto es utilizar la función CurrentDb, porque permite crear más de una variable de objeto Database que apunte a la base de datos actual.

Abrir una base de datos y establecer una referencia

Versión	Ejemplo
1.x	Set dbs = OpenDatabase("Contactos.mdb")
2.x y posterior	Set dbs = DBEngine.Workspaces(0).OpenDatabase("Contactos.mdb")
o	Set dbs = Workspaces(0).OpenDatabase("Contactos.mdb")
o	Set dbs = OpenDatabase("Contactos.mdb")
Abrir un Recordset del tipo tabla

Versión	Ejemplo
1.x	Dim tbl As Table Set tbl = dbs.OpenTable("Pedidos")
2.x	Dim rst As Recordset Set rst = dbs.OpenRecordset("Pedidos", DB_OPEN_TABLE)
o	Dim rst As Recordset Set rst = dbs!Pedidos.OpenRecordset
7.0 o posterior	Dim rst As Recordset Set rst = dbs.OpenRecordset("Pedidos", dbAbrirTabla)
o	Dim rst As Recordset Set rst = dbs!Pedidos.OpenRecordset
Abrir en exclusiva un Recordset del tipo tabla

Versión	Ejemplo
1.x	Dim tbl As Table Set tbl = dbs.OpenTable("Pedidos", DB_DENY_READ)
2.x	Dim rst As Recordset Set rst = dbs.OpenRecordset("Pedidos", DB_OPEN_TABLE, DB_DENY_READ)
o	Dim rst As Recordset Set rst = dbs!Pedidos.OpenRecordset(DB_OPEN_TABLE, DB_DENY_READ)
7.0 o posterior	Dim rst As Recordset Set rst = dbs.OpenRecordset("Pedidos", dbAbrirTabla, dbDenyRead)
o	Dim rst As Recordset Set rst = dbs!Pedidos.OpenRecordset(dbAbrirTabla, dbDenyRead)
Abrir un Recordset del tipo Dynaset

Versión	Ejemplo
1.x	Dim dyn As Dynaset Set dyn = dbs.CreateDynaset("Pedidos")
2.x	Dim rst As Recordset Set rst = dbs.OpenRecordset("Pedidos", DB_OPEN_DYNASET)
o	Set rst = dbs!Pedidos.OpenRecordset(dbOpenDynaset)
7.0 o posterior	Dim rst As Recordset Set rst = dbs.OpenRecordset("Pedidos", dbOpenDynaset)
o	Set rst = dbs!Pedidos.OpenRecordset(dbOpenDynaset)
Abrir un Recordset del tipo Snapshot

Versión	Ejemplo
1.x	Dim snp As Snapshot Set snp = dbs.CreateSnapshot("Pedidos")
2.x	Dim rst As Recordset Set rst = dbs.OpenRecordset("Pedidos", DB_OPEN_SNAPSHOT)
o	Set rst = dbs!Pedidos.OpenRecordset(DB_OPEN_SNAPSHOT)
7.0 o posterior	Dim rst As Recordset Set rst = dbs.OpenRecordset("Pedidos", dbOpenSnapshot)
o	Set rst = dbs!Pedidos.OpenRecordset(dbOpenSnapshot)
Listar campos

Versión	Ejemplo
1.x	' Dado un objeto Table abierto tbl. Dim snp As Snapshot Set snp = tbl.ListFields() While Not snp.EOF    Debug.Print snp!Name, snp!Tipo    snp.MoveNext Wend snp.Cerrar
2.x	' Dado un objeto TableDef abierto tdf. Dim entI As Integer, fld As Field For entI = 0 To tdf.Fields.Count - 1    Set fld = tdf.Fields(entI)    Debug.Print fld.Name, fld.Tipo Next entI
7.0 o posterior	' Dado un objeto TableDef abierto tdf. Dim fld As Field For Each fld in tdf.Fields    Debug.Print fld.Name, fld.Tipo Next fld
Listar tablas de una base de datos

Versión	Ejemplo
1.x	' Dado un objeto Database abierto dbs. Dim snp As Snapshot Set snp = dbs.ListTables() While Not snp.EOF    Debug.Print snp!Name    snp.MoveNext Wend snp.Cerrar
2.x	' Dado un objeto Database abierto dbs. Dim entJ As Integer, tdf As TableDef For entJ = 0 To dbs.TableDefs.Count - 1    Set tdf = dbs.TableDefs(entJ)    Debug.Print tdf.Name Next entJ
7.0 o posterior	' Dado un objeto Database abierto dbs. Dim tdf As TableDef For Each tdf in dbs.TableDefs    Debug.Print tdf.Name Next tdf
Listar los índices de una tabla

Versión	Ejemplo
1.x	' Dado un objeto Table abierto tbl. Dim snp As Snapshot Set snp = tbl.ListIndexes() While Not snp.EOF    Debug.Print snp!Name    snp.MoveNext Wend snp.Cerrar
2.x	' Dado un objeto TableDef abierto tdf. Dim entI As Integer, idx As Index For entI = 0 To tdf.Indexes.Count - 1    Set idx = tdf.Indexes(entI)    Debug.Print idx.Name Next entI
7.0 o posterior	' Dado un objeto TableDef abierto tdf. Dim idx As Index For Each idx in tdf.Indexes    Debug.Print idx.Name Next idx
Listar los parámetros de una consulta

Versión	Ejemplo
1.x	' Dado un objeto QueryDef abierto qdf. Dim snp As Snapshot Set snp = qdf.ListParameters() While Not snp.EOF    Debug.Print snp!Name    snp.MoveNext Wend snp.Cerrar
2.x	' Dado un objeto QueryDef abierto qdf. Dim entI As Integer, prm As Parameter For entI = 0 to qdf.Parameters.Count - 1    Set prm = qdf.Parameters(i)    Debug.Print prm.Name Next entI
7.0 o posterior	' Dado un objeto QueryDef abierto qdf. Dim prm As Parameter For Each prm in qdf.Parameters    Debug.Print prm.Name Next prm
Establecer dinámicamente los parámetros de la consulta

Versión	Ejemplo
1.x	' Dada una base de datos abierta. Dim qdf As QueryDef, dyn As Dynaset Set qdf = dbs.OpenQueryDef("ConsultaPedidos") qdf.ParameterName = "[Fecha inicio]" Set dyn = qdf.CreateDynaset()
2.x	' Dado un objeto QueryDef abierto qdf. Dim entI As Integer, prm As Parameter, rst As Recordset For entI = 0 To qdf.Parameters.Count - 1    Set prm = qdf.Parameters(entI)    prm.Value = CuadroEnt("Valor para " & prm.Name) Next entI Set rst = qdf.OpenRecordset
7.0 o posterior	' Dado un objeto QueryDef abierto qdf. Dim prm As Parameter, rst As Recordset For Each prm in qdf.Parameters    prm.Value = CuadroEnt("Valor para " & prm.Name) Next prm Set rst = qdf.OpenRecordset
Ejecutar una consulta de paso a través

Versión	Ejemplo
1.x	' Dado un objeto Database abierto dbs. Dim lngFilas As Long ' Ejecutar el procedimiento guardado en el servidor. lngFilas = dbs.EjecutarSQL("EXECUTE SP_StoredProc")
o	Dim snp As Snapshot Set snp = dbs.CreateSnapshot("EXECUTE SP_StoredProc", DB_SQLPassThrough)
2.x y posterior	' Dado un objeto Database abierto dbs. Dim qdf As QueryDef, rst As Recordset Set qdf = dbs.CreateQueryDef("ConsultaODBC") qdf.Connect = "ODBC;" & "DSN=MiServidor;" _    & "UID=sa;" & "PWD=hithere;" & "DATABASE=pubs" qdf.SQL = "EXECUTE SP_StoredProc" qdf.ReturnsRecords = True . . . Set rst = qdf.OpenRecordset
Crear una consulta temporal

Versión	Ejemplo
1.x	' Dado un objeto Database abierto dbs. Dim qdf As QueryDef, cadTemp As String cadTemp = "TMP:" & User() & Time() qdf = dbs.CreateQueryDef(cadTemp) qdf.SQL = "UPDATE Tabla1 SET Tabla1.Campo1 = Campo1 * 1.1;" . . . qdf.Ejecutar qdf.Cerrar . . . dbs.DeleteQueryDef(cadTemp)
2.x y posterior	qdf = dbs.CreateQueryDef("") qdf.Ejecutar qdf.Cerrar


Nuevos elementos de lenguaje

Microsoft Access proporciona un grupo de nuevos y mejores objetos, métodos, propiedades, funciones, instrucciones, tipos de datos y eventos para permitir crear eficaces aplicaciones de bases de datos con Visual Basic.

Nuevos tipos de datos

Nuevos eventos

Nuevas funciones

Nuevos métodos

Nuevos objetos

Nuevas propiedades

Nuevas instrucciones


Nuevos objetos

La siguiente lista incluye los nuevos objetos en Microsoft Access 95 y Microsoft Access 97. Los objetos nuevos en Microsoft Access 97 están marcados con un asterisco (*).

Objetos Microsoft Access

colección Controles (Controls) colección ItemsSelected colección Modules* colección Páginas (Pages)* colección References* objeto Application	objeto DoCmd objeto Module* objeto Página (Page)* objeto Reference* objetos Document SummaryInfo y UserDefined
Objetos Visual Basic

objeto Collection objeto Debug	objeto Err
Objetos DAO

colección Errors	objeto Connection
Objetos Microsoft Office

Para ver una lista de los nuevos objetos disponibles en la Biblioteca de objetos de Microsoft Office 8.0, abra la Referencia de Visual Basic de Microsoft Office en el contenido de la Ayuda.

Para usar los objetos suministrados por Microsoft Office, debe establecer una referencia a la Biblioteca de objetos de Microsoft Office 8.0, cuando está abierta la ventana Módulo, haciendo clic en Referencias en el menú Herramientas y activando la casilla de verificación junto a esta biblioteca.


Nuevos métodos

Las siguientes listas incluyen los métodos nuevos de Microsoft Access 95 y Microsoft Access 97. Los métodos nuevos en Microsoft Access 97 están marcados con un asterisco (*).

A–H

AccessError Add (colección Páginas (Pages))* AddFromFile (objeto Module)* AddFromFile (colección References)* AddFromGUID* AddFromString* AddToFavorites* ApplyFilter Beep BuildCriteria CancelEvent CloseCurrentDatabase CopyObject CreateEventProc* DefaultControl*	DefaultWorkspaceClone DeleteLines* DeleteObject DoMenuItem Dropdown Echo Find* FindNext FindRecord Follow* FollowHyperlink* GoToControl GoToPage GoToRecord Hourglass
I–Q

InsertLines* InsertText Item Maximize Minimize MoveSize NewCurrentDatabase OpenCurrentDatabase	OpenForm OpenModule OpenQuery OpenReport OpenTable OutputTo PrintOut Quit
R–Z

RefreshDatabaseWindow* RefreshTitleBar Remove Remove (colección Pages)* Remove (colección References)* Rename Repaint ReplaceLine* Requery Restore Run RunCommand* RunMacro	RunSQL Save SelectObject SendObject SetMenuItem SetWarnings ShowAllRecords ShowToolbar SizeToFit TransferDatabase TransferSpreadsheet TransferText Undo
Nuevos métodos DAO

Cancel CancelUpdate CopyQueryDef GetRows MakeReplica	NuevosPassword NextRecordset OpenConnection SetOption Synchronize
Métodos Microsoft Office

Para ver una lista de los nuevos métodos disponibles en la Biblioteca de objetos de Microsoft Office 8.0, abra la Referencia de Visual Basic de Microsoft Office en el contenido de la Ayuda.

Para usar los objetos suministrados por Microsoft Office, debe establecer una referencia a la Biblioteca de objetos de Microsoft Office 8.0, cuando está abierta la ventana Módulo, haciendo clic en Referencias en el menú Herramientas y activando la casilla de verificación junto a esta biblioteca.


Nuevas Propiedades

Las siguientes listas incluyen las nuevas propiedades en Microsoft Access 95 y Microsoft Access 97. Las propiedades nuevas en Microsoft Access 97 están marcadas con un asterisco (*).

A–G

ActivarFiltro (FilterOn) ActivarOrden (OrderByOn) ActiveDatasheet AltoFijoDeLaFicha (TabFixedHeight)* AnchoFijoDeLaFicha (TabFixedWidth)* AppIcon Application AppTitle BarraDeMenúsDeInicio (StartupMenuBar) Base de datos (propiedades) BarraDeHerramientas (Toolbar)* BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) BarraDeMenús (MenuBar) BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar) BotónCerrar (CloseButton) BotonesMinMax (MinMaxButtons) BotónQuéEsEsto (WhatsThisButton) BuiltIn BuscarPorFiltro (FilterLookup) Ciclo (Cycle) CodeContextObject Collection ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor) ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior) ContieneDatos (HasData) Continuará (WillContinue) ControlType CountOfDeclarationLines* CountOfLines* CurrentRecord DatasheetBackColor*	DatasheetForeColor* DBEngine Descripción DirecciónDeHipervínculo (HyperlinkAddress)* DistribuciónDeLaImagen (PictureAlignment) EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect) EfectoEspecial (SpecialEffect) EnLaSelección (InSelection) EntradaDeDatos (DataEntry) Estilo (Style)* EstiloDeLosBordes (BorderStyle) Filtro (Filter) Finalizar al producirse un error (FailOnError)* Formato (Format) FormularioDeInicio (StartupForm) FullPath GUID
H–P

HaContinuado (HasContinued) hWndAccessApp Hyperlink* ImageHeight Imagen (Picture) ImageWidth ÍndiceDePáginas (PageIndex)* InsideHeight InsideWidth IsVisible* Kind* Lines* ListIndex Major* MantenerJuntoElGrupo (GrpKeepTogether) MDE* MenúDeMétodoAbreviado (ShortcutMenu) Minor* MousePointer* Modificado (Dirty) ModoCambiarTamañoDeLaImagen (PictureSizeMode) MosaicoDeImágenes (PictureTiling) Mostrar control MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar) NewRecord Nuevos valores Número máximo de registros (MaxRecords)	Objeto (propiedades) OrdenarPor (OrderBy) PáginasDeLaImagen (PicturePages) PermitirAgregar (AllowAdditions) PermitirAutocorreción (AllowAutoCorrect) PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) PermitirCambiosEnBarraDeHerramientas (AllowToolbarChanges) PermitirEdiciones (AllowEdits) PermitirEliminación (AllowDeletions) PermitirIgnorarInicio (AllowBypassKey) PermitirMenúsCompletos (AllowFullMenus) PermitirMenúsContextuales (AllowShortcutMenus) PermitirTeclasEspeciales (AllowSpecialKeys) PermitirVerCódigo (AllowBreakIntoCode) PictureData Principal (Parent) ProcBodyLine* ProcCountLines* ProcOfLine* ProcStartLine* ProjectName*
Q–Z

RepetirSección (RepeatSection) ReplicationConflictFunction SelecciónMúltiple (MultiSelect) Selected SelHeight SelLeft SelTop SelWidth SeparadoresDeRegistros (DividingLines) MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow) SubdirecciónDeHipervínculo (HyperlinkSubAddress)* TeclaDePresentaciónPreliminar (KeyPreview)	TextoDeAyudaDelControl (ControlTipText) TieneUnMóduloAsociado (HasModule)* Tipo de datos TipoDeImagen (PictureType) TipoRecordset (RecordsetType) TripleEstado (TripleState) Usar transacción (UseTransaction)* UserControl VariasFilas (MultiRow)* Visible Visible (objeto Application)
Nuevas propiedades DAO

AbsolutePosition AllPermissions ConflictTable Connection* DefaultCursorDriver* DefaultType* DefaultUser DesignMasterID Direction* DistinctCount EditMode FieldSize*	HelpContext HelpFile Inherit IniPath KeepLocal MaxRecords* RecordsAffected Replicable ReplicaID StillExecuting* Transactions*
Propiedades Microsoft Office

Para ver una lista de las nuevas propiedades disponibles en la Biblioteca de objetos de Microsoft Office 8.0, abra la Referencia de Visual Basic de Microsoft Office en el contenido de la Ayuda.

Para usar los objetos suministrados por Microsoft Office, debe establecer una referencia a la Biblioteca de objetos de Microsoft Office 8.0, cuando está abierta la ventana Módulo, haciendo clic en Referencias en el menú Herramientas y activando la casilla de verificación junto a esta biblioteca.


Nuevas funciones

La siguiente lista incluye nuevas funciones de Microsoft Access 95 y Microsoft Access 97. Las funciones nuevas en Microsoft Access 97 están marcadas con un asterisco (*).

Array CarB (ChrB) Cbool Cbyte Cfecha (Cdate) CVErr DerB (RightB) GUIDFromString HoraFechaArch (FileDateTime) HyperlinkPart* EntradaB (InputB) IsArray	IsError IsMissing IsObject IzqB (LeftB) LoadPicture LongArch (FileLen) MedioB (MidB) Nz ObtenerAtributo (GetAttr) ObtenerValor (GetSetting) ObtenerValores (GetAllSettings) StringFromGUID TypeName


Nuevas instrucciones

Visual Basic proporciona las siguientes instrucciones nuevas para Microsoft Access. Todas estas instrucciones aparecieron en Microsoft Access 95.

DeleteSetting FileCopy For Each...Next Option Private Private Property Get	Property Let Property Set Public SaveSetting SetAttr With


Nuevos tipos de datos

Visual Basic proporciona los siguientes tipos de datos nuevos para Microsoft Access. Todos estos tipos de datos aparecieron por primera vez en Microsoft Access 95.

Boolean

Byte

Date


Nuevos eventos

Microsoft Access proporciona los siguientes eventos nuevos de formularios e informes. Estos eventos aparecieron por primera vez en Microsoft Access 95.

ApplyFilter

Filter

NoData

Page

Microsoft Access 97 ofrece también los siguientes nuevos eventos.

Initialize

ItemAdded

ItemRemoved

Terminate


Colección Controles (Controls)

La colección Controles (Controls) contiene todos los controles de un formulario, informe o sección dentro de otro control, o anexado a otro control. La colección Controles (Controls) es miembro de un objeto Formulario (Form), Informe (Report), Section o Control. El diagrama siguiente ilustra las relaciones entre la colección Controles (Controls) y un objeto Formulario (Form) o Informe (Report).

Comentarios

Es posible enumerar los controles individuales, contarlos y establecer sus propiedades en la colección Controles (Controls). Por ejemplo, se puede enumerar la colección Controles (Controls) de un formulario concreto y establecer la propiedad Altura (Height) de cada control a un valor determinado.

Sugerencia   La instrucción For Each...Next es útil para enumerar una colección.

Es más rápido hacer referencia implícita a la colección Controles (Controls), como en los ejemplos siguientes, que hacen referencia a un control llamado DatosNuevos del formulario FormularioPedidos. De los siguientes ejemplos de sintaxis, Me!DatosNuevos es la forma más rápida de hacer referencia al control.

Me!DatosNuevos	' O Forms!FormularioPedidos!DatosNuevos.

Me![Datos Nuevos]	' Úselo si el nombre del control contiene espacios.

Me("DatosNuevos")	' Más lenta.

También es posible hacer referencia a un determinado control refiriéndose explícitamente a la colección Controles (Controls).

Me.Controls!DatosNuevos	' O Forms!FormularioPedidos.Controls!DatosNuevos.

Me.Controls![Datos Nuevos]

Me.Controls("DatosNuevos")

Además, se puede hacer referencia a un control por su índice en la colección. La colección Controles (Controls)está indexada y comienza desde cero.

Me(0)	' Hace referencia al primer elemento de la colección.

Me.Controls(0)

Nota   Puede usar la palabra clave Me para representar a un formulario o un informe dentro del código sólo si está haciendo referencia al formulario o informe desde el código de un módulo de formulario o módulo de informe. Si está haciendo referencia a un formulario o informe desde un módulo estándar u otro módulo distinto al módulo del formulario o informe, ha de usar la referencia completa al formulario o informe.

Para trabajar con los controles en una sección de un formulario o un informe, use la propiedad Sección (Section) para devolver una referencia a un objeto Section. Después, refiérase a la colección Controles (Controls) del objeto Section.

Dos tipos de objetos Control, el control ficha y el control grupo de opciones, tienen colecciones Controles (Controls) que pueden contener múltiple controles. La colección Controles (Controls) que pertenece al control grupo de opciones contiene cualquiera de los controles botón de opción, casilla de verificación, botón de alternar o etiqueta en el grupo de opciones.

El control ficha contiene una colección Páginas (Pages), que es un tipo especial de colección Controles (Controls). La colección Páginas (Pages) contiene objetos Página (Page). Los objetos Página (Page) son también controles. La constante de la propiedad ControlType para un control Página (Page) es acPage. Un objeto Página (Page), por el contrario, tiene su propia colección Controles (Controls), que contiene todos los controles de una página individual.

Otros objetos Control tienen una colección Controles (Controls) que puede contener una etiqueta anexada. Estos controles incluyen el control cuadro de texto, grupo de opciones, botón de opción, botón de alternar, casilla de verificación, cuadro combinado, cuadro de lista, botón de comando, marco de objeto dependiente y marco de objeto independiente.


Constantes de Microsoft Access - Introducción
Constantes de Microsoft Access — Introducción

Generalidades

Una constante representa un valor numérico o de cadena que no cambia. Las constante se pueden utilizar para mejorar la legibilidad de su código de Visual Basic y para hacer que su código sea más fácil de mantener. Además, la utilización de las constantes intrínsecas asegura que el código continuará funcionando incluso si los valores base a los que representan las constantes cambian en versiones posteriores de Microsoft Access.

Microsoft Access es compatible con tres tipos de constantes:

•	Constantes simbólicas, que se crean utilizando la instrucción Const y se usan en los módulos.

•	Constantes intrínsecas, que son parte de Microsoft Access o de una biblioteca de referencia.

•	Constantes definidas por el sistema: True, False, y Null.

Constantes simbólicas

A menudo utilizará los mismos valores en forma repetida en su código, o bien, se dará cuenta de que el código depende de ciertos números cuyo significado no es claro. En estos casos, puede facilitar la lectura y trabajo usando constantes simbólicas o definidas por el usuario, que le permiten usar un nombre significativo en lugar de un número o cadena.

Una vez que se haya creado una constante usando la instrucción Const, no es posible modificar o asignarle un nuevo valor. Tampoco se puede crear una constante que tenga el mismo nombre que una constante intrínseca.

Los siguientes ejemplos demuestran algunas de las diferentes maneras de usar la instrucción Const para declarar constantes numéricas y de cadena:

Const conPI = 3.14159265	' PI es igual a este número.

Const conPI2 = conPI * 2	' Una constante utilizada para crear otra.

Const conVersion = "Version 7.0"	' Declarar una constante String.

Constantes intrínsecas

Además de las constantes que se declaran con la instrucción Const, Microsoft Access declara automáticamente un número de constantes intrínsecas y ofrece acceso a las constantes de Visual Basic para aplicaciones (VBA) y a las constantes de Objeto de acceso a datos (Data Access Object (DAO)). Las constantes también se pueden usar en otras bibliotecas de objetos a los que se haya hecho referencia. Para obtener más información sobre cómo se agregan referencias, consulte Establecer referencias a bibliotecas de tipos.

Cualquier constante intrínseca puede ser utilizada en una macro o en Visual Basic. Estas constantes están disponibles todo el tiempo. Las constantes específicas incorporadas que se utilizan con una función, método o propiedad determinada se describen en la ayuda temática para esa función, método o propiedad.

Nota   El Examinador de objetos se puede utilizar para ver las listas de constantes intrínsecas de todas las bibliotecas de objetos que estén disponibles.

Las constantes intrínsecas tienen un prefijo de dos letras que identifica a la biblioteca de objetos que define la constante. Las constantes de la biblioteca de Microsoft Access llevan un prefijo "ac"; las constantes de la biblioteca DAO llevan el prefijo “db” y, finalmente, las constantes de la biblioteca VBA llevan el prefijo “vb”. Por ejemplo:

•	acForm

•	dbAppendOnly

•	vbCurrency

Nota Puesto que los valores representados por las constantes intrínsecas pueden cambiar en las versiones futuras de Microsoft Access, debería utilizar las constantes en lugar de sus valores actuales. Se puede, no obstante, mostrar el valor actual de una constante eligiendo la constante en el Examinador de objetos o escribiendo ?nombreconstante en la ventana Depuración.

Las constantes intrínsecas se pueden utilizar allí donde se puedan utilizar las constantes simbólicas o las constantes definidas por el usuario, incluidas en las expresiones. El siguiente ejemplo muestra cómo se podría utilizar la constante intrínseca vbCurrency para determinar si la variable varNum es un tipo de datos Variant para la que la función VarType devuelve 6 (Moneda):

Dim varNum As Variant

If VarType(varNum) = vbCurrency Then

Debug.Print "varNum contiene datos tipo Moneda."

Else

Debug.Print "varNum no contiene datos tipo Moneda."

End If

Existen varias categorías de constantes intrínsecas. Para obtener una lista de las constantes intrínsecas de una categoría concreta, haga clic en dicha categoría:

•	Constantes de acción

•	Constantes DAO

•	Constantes de procedimientos de evento

•	Constantes de código de tecla

•	Otras constantes

•	Constantes del método RunCommand (estas son un subconjunto de las constantes de acción)

•	Constantes de seguridad

•	Constantes de Visual Basic

•	Constantes de TipoVar

Constantes definidas por el sistema

Las constantes definidas por el sistema True, False y Null se pueden utilizar en cualquier parte de Microsoft Access. Por ejemplo, se puede utilizar True en la siguiente expresión de condición de macro. La condición se da si el valor de la propiedad Visible para el formulario Empleados es igual a True.

Forms!Empleados.Visible = True

La constante Null se puede utilizar en cualquier parte de Microsoft Access. Por ejemplo, se puede utilizar Null para establecer la propiedad ValorPredeterminado (DefaultValue) para el control de un formulario usando la siguiente expresión:

=Null


Constantes de seguridad

Se pueden asignar permisos a los objetos de base de datos usando Visual Basic o estableciendo la propiedad Permissions a una de las siguientes constantes:

acSecFrmRptExecute	dbSecDelete
acSecFrmRptReadDef	dbSecDeleteData
acSecFrmRptWriteDef	dbSecFullAccess
acSecMacExecute	dbSecInsertData
acSecMacReadDef	dbSecNoAccess
acSecMacWriteDef	dbSecReadSec
acSecModReadDef	dbSecReadDef
acSecModWriteDef	dbSecReplaceData
dbSecCreate	dbSecRetrieveData
dbSecDBAdmin	dbSecWriteDef
dbSecDBCreate	dbSecWriteOwner
dbSecDBExclusive	dbSecWriteSec
dbSecDBOpen
Nota Las constantes que empiecen con acSec sólo están disponibles para establecer los permisos de los objetos de bases de datos usando Visual Basic.


Constantes de procedimientos de evento

Constantes del procedimiento de evento AfterDelConfirm

Las siguientes constantes se pueden utilizar con los procedimientos de evento del evento AfterDelConfirm:

•	acDeleteCancel

•	acDeleteOK

•	acDeleteUserCancel

Constantes de procedimiento de evento BeforeDelConfirm

Las siguientes constantes se pueden utilizar con los procedimientos de evento del evento BeforeDelConfirm:

•	acDataErrContinue

•	acDataErrDisplay

Constantes de máscara de botón

Las siguientes constantes de máscara de botón se pueden utilizar con los procedimientos de evento de los eventos MouseDown, MouseUp y MouseMove:

•	acLeftButton

•	acMiddleButton

•	acRightButton

Constantes de máscara de tecla

Las siguientes constantes de máscara de tecla se pueden utilizar con los procedimientos de evento para los eventos KeyDown, KeyUp, MouseDown, MouseUp y MouseMove:

•	acAltMask

•	acCtrlMask

•	acShiftMask

Constantes de procedimiento de evento NotInList

Las siguientes constantes se pueden utilizar con los procedimientos de evento del evento NotInList:

•	acDataErrAdded

•	acDataErrContinue

•	acDataErrDisplay

Constantes de procedimiento de evento Error

Las siguientes constantes se pueden utilizar con los procedimientos de evento del evento Error:

•	acDataErrContinue

•	acDataErrDisplay

Constantes de procedimiento de evento Updated

Las siguientes constantes se pueden utilizar con los procedimientos de evento del evento Updated:

•	acOLEChanged

•	acOLEClosed

•	acOLERenamed

•	acOLESaved

Constantes de procedimiento de evento ApplyFilter

Las siguientes constantes se pueden utilizar con los procedimientos de evento del evento ApplyFilter:

•	acApplyFilter

•	acCloseFilterWindow

•	acShowAllRecords

Constantes de procedimiento de evento Filter

Las siguientes constantes se pueden utilizar con los procedimientos de evento del evento Filter:

•	acFilterAdvanced

•	acFilterByForm


Constantes de acción

Estas constantes se pueden utilizar cuando se utiliza Visual Basic para ejecutar un método del objeto DoCmd. Usar estas constantes con un método del objeto DoCmd es lo mismo que ejecutar la acción correspondiente en una macro. Observe que el método DoMenuItem es obsoleto; en su lugar debe usarse el método RunCommand y sus constantes asociadas en Microsoft Access 97. Las constantes enumeradas a continuación con un asterisco (*) han sido reemplazadas con otras constantes, aunque todavía funcionan con el método o métodos que se enumeran.

Constantes del método DoCmd	Usada con
acActiveDataObject	GoToRecord
acAdd	OpenQuery, OpenTable
acAll	FindRecord
acAnywhere	FindRecord
acCopy	DoMenuItem
acCurrent	FindRecord
acCut	DoMenuItem
acDataForm	GoToRecord
acDataQuery	GoToRecord
acDataTable	GoToRecord
acDefault	Close, CopyObject, DeleteObject, Rename, RepaintObject, Save
acDelete	DoMenuItem
acDesign	OpenForm
acDialog	OpenForm
acDown	FindRecord
acDraft	PrintOut
acEdit	OpenQuery, OpenTable
acEditMenu	DoMenuItem
acEntire	FindRecord
acExit*	Quit (objeto DoCmd), Quit (objeto Application)
acExport	TransferDatabase, TransferSpreadsheet
acExportDelim	TransferText
acExportFixed	TransferText
acExportHTML	TransferText
acExportMerge	TransferText
acFile	DoMenuItem
acFirst	GoToRecord
acForm	Close, CopyObject, DeleteObject, Rename, RepaintObject, Save, SelectObject, TransferDatabase
acFormAdd	OpenForm
acFormatASP	OutputTo
acFormatHTML	OutputTo, SendObject
acFormatIIS	OutputTo
acFormatRTF	OutputTo, SendObject
acFormatTXT	OutputTo, SendObject
acFormatXLS	OutputTo, SendObject
acFormBar	DoMenuItem
acFormDS	OpenForm
acFormEdit	OpenForm
acFormPropertySettings	OpenForm
acFormReadOnly	OpenForm
acGoTo	GoToRecord
acHidden	OpenForm
acHigh	PrintOut
acIcon	OpenForm
acImport	TransferDatabase, TransferSpreadsheet
acImportDelim	TransferText
acImportFixed	TransferText
acImportHTML	TransferText
acLast	GoToRecord
acLink	TransferDatabase, TransferSpreadsheet
acLinkDelim	TransferText
acLinkFixed	TransferText
acLinkHTML	TransferText
acLow	PrintOut
acMacro	Close, CopyObject, DeleteObject, Rename, RepaintObject, Save, SelectObject, TransferDatabase
acMedium	PrintOut
acMenuCheck	SetMenuItem
acMenuGray	SetMenuItem
acMenuUncheck	SetMenuItem
acMenuUngray	SetMenuItem
acMenuVer1X	DoMenuItem
acMenuVer20	DoMenuItem
acMenuVer70	DoMenuItem
acModule	Close, CopyObject, DeleteObject, Rename, RepaintObject, Save, SelectObject, TransferDatabase
acNew	DoMenuItem
acNewRec	GoToRecord
acNext	GoToRecord
acNormal	OpenForm
acObject	DoMenuItem
acObjectUpdate	DoMenuItem
acObjectVerb	DoMenuItem
acOutputForm	OutputTo
acOutputModule	OutputTo
acOutputQuery	OutputTo
acOutputReport	OutputTo
acOutputTable	OutputTo
acPages	PrintOut
acPaste	DoMenuItem
acPreview	OpenForm
acPrevious	GoToRecord
acPrintAll	PrintOut
acPrompt*	Close, Quit (objeto DoCmd), Quit (objeto Application)
acQuery	Close, CopyObject, DeleteObject, Rename, RepaintObject, Save, SelectObject, TransferDatabase
acQuitPrompt	Quit (objeto DoCmd), Quit (objeto Application)
acQuitSaveAll	Quit (objeto DoCmd), Quit (objeto Application)
acQuitSaveNone	Quit (objeto DoCmd), Quit (objeto Application)
acReadOnly	OpenQuery, OpenTable
acRecordsMenu	DoMenuItem
acRefresh	DoMenuItem
acReport	Close, CopyObject, DeleteObject, Rename, RepaintObject, Save, SelectObject, TransferDatabase
acSaveForm	DoMenuItem
acSaveFormAs	DoMenuItem
acSave*	Quit (objeto DoCmd), Quit (objeto Application)
acSaveNo	Close
acSavePrompt	Close
acSaveRecord	DoMenuItem
acSaveSí	Close
acSearchAll	FindRecord
acSelectAllRecords	DoMenuItem
acSelection	PrintOut
acSelectRecord	DoMenuItem
acSendForm	SendObject
acSendModule	SendObject
acSendNoObject	SendObject
acSendQuery	SendObject
acSendReport	SendObject
acSendTable	SendObject
acSpreadsheetTypeExcel3	TransferSpreadsheet
acSpreadsheetTypeExcel4	TransferSpreadsheet
acSpreadsheetTypeExcel5	TransferSpreadsheet
acSpreadsheetTypeExcel7	TransferSpreadsheet
acSpreadsheetTypeExcel97	TransferSpreadsheet
acSpreadsheetTypeLotusWK1	TransferSpreadsheet
acSpreadsheetTypeLotusWK3	TransferSpreadsheet
acSpreadsheetTypeLotusWK4	TransferSpreadsheet
acSpreadsheetTypeLotusWJ2 — sólo versión Japonesa	TransferSpreadsheet
acStart	FindRecord
acTable	Close, CopyObject, DeleteObject, Rename, RepaintObject, Save, SelectObject, TransferDatabase
acToolbarNo	ShowToolbar
acToolbarWhereApprop	ShowToolbar
acToolbarSí	ShowToolbar
acUndo	DoMenuItem
acUp	FindRecord
acViewDesign	OpenQuery, OpenReport, OpenTable
acViewNormal	OpenQuery, OpenReport, OpenTable
acViewPreview	OpenQuery, OpenReport, OpenTable
acWindowNormal	OpenForm


Otras constantes

Las siguientes tablas enumeran constantes intrínsecas variadas proporcionadas por Microsoft Access.

Constantes de cuadros de lista y de cuadros combinados

Las siguientes constantes se pueden utilizar para rellenar un cuadro de lista o cuadro combinado usando una función. Estas constantes se utilizan con una función que es el valor de la propiedad TipoDeOrigenDeLaFila (RowSourceType), usando un formato de función especial.

AcLBClose	acLBGetRowCount
acLBEnd	acLBGetValue
acLBGetColumnCount	acLBInitialize
acLBGetColumnWidth	acLBOpen
acLBGetFormat
Constantes de la función SysCmd

Las siguientes constantes se pueden utilizar con la función SysCmd:

acForm	acSysCmdClearStatus
acMacro	acSysCmdGetObjectState
acModule	acSysCmdGetWorkgroupFile
acObjStateDirty	acSysCmdIniFile
acObjStateNew	acSysCmdInitMeter
acObjStateOpen	acSysCmdProfile
acQuery	acSysCmdRemoveMeter
acReport	acSysCmdRuntime
acSysCmdAccessDir	acSysCmdSetStatus
acSysCmdAccessVer	acSysCmdUpdateMeter
acSysCmdClearHelpTopic	acTable
Constantes de las funciones CreateControl y CreateReportControl y de la propiedad TipoDeControl (ControlType)

Una de las siguientes constantes se puede utilizar con la propiedad ControlType y las funciones CreateControl y CreateReportControl para especificar el tipo de control:

acBoundObjectFrame	acOptionButton
acCheckBox	acOptionGroup
acComboBox	acPage
acCommandButton	acPageBreak
acCustomControl	acRectangle
acImage	acSubform
acLabel	acTabCtl
acLine	acTextBox
acListBox	acToggleButton
acObjectFrame
Constantes de las funciones CreateControl y CreateReportControl y de la propiedad Sección (Section)

Una de las siguientes constantes se puede utilizar con la propiedad Sección (Section) y las funciones CreateControl y CreateReportControl para especificar una sección de un formulario o informe:

acDetail	acGroupLevel2Header
acFooter	acHeader
acGroupLevel1Footer	acPageFooter
acGroupLevel1Header	acPageHeader
acGroupLevel2Footer
Constantes OLE

La siguiente tabla enumera las constantes OLE, y muestra los elementos del lenguaje con los que se pueden utilizar estas constantes.

Constantes OLE	Usado con
acOLEActivate	propiedad Action
acOLEActivateDoubleClick	propiedad ActivaciónAutomática (AutoActivate)
acOLEActivateGetFocus	propiedad ActivaciónAutomática (AutoActivate)
acOLEActivateManual	propiedad ActivaciónAutomática (AutoActivate)
acOLEChanged	evento Updated
acOLEClose	propiedad Action
acOLEClosed	evento Updated
acOLECopy	propiedad Action
acOLECreateEmbed	propiedad Action
acOLECreateFromFile (igual que acOLECreateLink)	propiedad Action
acOLECreateLink	propiedad Action
acOLECreateNew (igual que acOLECreateEmbed)	propiedad Action
acOLEDelete	propiedad Action
acOLEDisplayContent	propiedad TipoDePresentación (DisplayType)
acOLEDisplayIcon	propiedad TipoDePresentación (DisplayType)
acOLEEither	propiedad TipoOLEPermitido (OLETypeAllowed)
acOLEEmbedded	propiedad TipoOLE (OLEType), propiedad TipoOLEPermitido (OLETypeAllowed)
acOLEFetchVerbs	propiedad Action
acOLEInsertObjDlg	propiedad Action
acOLELinked	propiedad TipoOLE (OLEType), propiedad TipoOLEPermitido (OLETypeAllowed)
acOLENone	propiedad TipoOLE (OLEType)
acOLEPaste	propiedad Action
acOLEPasteSpecialDlg	propiedad Action
acOLERenamed	evento Updated
acOLESaved	evento Updated
acOLESizeAutoSize (no se utiliza)	propiedad ModoCambiarTamaño (SizeMode)
acOLESizeClip	propiedad ModoCambiarTamaño (SizeMode)
acOLESizeStretch	propiedad ModoCambiarTamaño (SizeMode)
acOLESizeZoom	propiedad ModoCambiarTamaño (SizeMode)
acOLEUpdate	propiedad Action
acOLEUpdateAutomatic	propiedad OpcionesDeActualización (UpdateOptions)
acOLEUpdateFrozen (no se utiliza)	propiedad OpcionesDeActualización (UpdateOptions)
acOLEUpdateManual	propiedad OpcionesDeActualización (UpdateOptions)
acOLEVerbHide	propiedad Verbo (Verb)
acOLEVerbInPlaceActivate	propiedad Verbo (Verb)
acOLEVerbInPlaceUIActivate	propiedad Verbo (Verb)
acOLEVerbOpen	propiedad Verbo (Verb)
acOLEVerbPrimary	propiedad Verbo (Verb)
acOLEVerbShow	propiedad Verbo (Verb)
Constantes de la propiedad EfectoEspecial (SpecialEffect)

La siguiente tabla enumera las constantes que se pueden utilizar para especificar o determinar el estado de la propiedad EfectoEspecial (SpecialEffect). Las constantes acEffectNormal, acEffectRaised, y acEffectSunken se pueden utilizar también con la propiedad EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect).

acEffectChisel	acEffectRaised
acEffectEtched	acEffectShadow
acEffectNormal	acEffectSunken
Constantes de cuadrícula

La siguiente tabla enumera las constantes que se pueden utilizar para especificar o determinar el estado del efecto cuadrícula de un objeto en la vista de hoja de datos. Estas constantes se pueden utilizar con la propiedad ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridLinesBehavior).

AcGridlinesBoth	acGridlinesNone
acGridlinesBothV2	acGridlinesVert
acGridlinesHoriz
Constantes de tipo

La siguiente tabla enumera las constantes que se pueden utilizar para determinar si el módulo activo es un módulo estándar o un módulo de clase. Estas constantes se pueden utilizar con la propiedad Type.

AcClassModule
acStandardModule
Constantes de la función HyperlinkPart

Las siguientes constantes se pueden utilizar con la función HyperlinkPart:

acDisplayedValue	acAddress
acDisplayName	acSubAddress
Constantes de procedimientos

Las siguientes constantes se pueden utilizar con las propiedades ProcStartLine, ProcBodyLine, ProcOfLine y ProcCountLines.

vbext_pk_Get	vbext_pk_Proc
vbext_pk_Let	vbext_pk_Set
Constantes de la propiedad Kind

Las siguientes constantes se pueden utilizar con la propiedad Kind del objeto Reference:

Project
TypeLib


Constantes de código de tecla

Las siguientes constantes se pueden utilizar para representar los valores del teclado. Estas constantes se pueden utilizar en Microsoft Access en los procedimientos de evento de los eventos KeyDown y KeyUp.

vbKey0	vbKeyF5	vbKeyNumPad4
vbKey1	vbKeyF6	vbKeyNumPad5
vbKey2	vbKeyF7	vbKeyNumPad6
vbKey3	vbKeyF8	vbKeyNumPad7
vbKey4	vbKeyF9	vbKeyNumPad8
vbKey5	vbKeyF10	vbKeyNumPad9
vbKey6	vbKeyF11	vbKeyO
vbKey7	vbKeyF12	vbKeyP
vbKey8	vbKeyF13	vbKeyPageDown
vbKey9	vbKeyF14	vbKeyPageUp
vbKeyA	vbKeyF15	vbKeyPause
vbKeyAdd	vbKeyF16	vbKeyPrint
vbKeyB	vbKeyG	vbKeyQ
vbKeyBack	vbKeyH	vbKeyR
vbKeyC	vbKeyHelp	vbKeyRButton
vbKeyCancel	vbKeyHome	vbKeyReturn
vbKeyCapital	vbKeyI	vbKeyRight
vbKeyClear	vbKeyInsert	vbKeyS
vbKeyControl	vbKeyJ	vbKeySelect
vbKeyD	vbKeyK	vbKeySeparator
vbKeyDecimal	vbKeyL	vbKeyShift
vbKeyDelete	vbKeyLButton	vbKeySnapshot
vbKeyDivide	vbKeyLeft	vbKeySpace
vbKeyDown	vbKeyM	vbKeySubtract
vbKeyE	vbKeyMButton	vbKeyT
vbKeyEnd	vbKeyMenu	vbKeyTab
vbKeyEscape	vbKeyMultiply	vbKeyU
vbKeyExecute	vbKeyN	vbKeyUp
vbKeyF	vbKeyNumLock	vbKeyV
vbKeyF1	vbKeyNumPad0	vbKeyW
vbKeyF2	vbKeyNumPad1	vbKeyX
vbKeyF3	vbKeyNumPad2	vbKeyY
vbKeyF4	vbKeyNumPad3	vbKeyZ


Constantes del método RunCommand

Estas constantes se utilizan en Visual Basic cuando se usa el método RunCommand. Usar estas constantes con el método RunCommand es lo mismo que suministrar el valor de la acción EjecutarComando en una macro.

AcCmdAboutMicrosoftAccess	acCmdHideColumns	acCmdRefreshPage
acCmdAddWatch	acCmdHideTable	acCmdRegisterActiveXControls
acCmdAdvancedFilterSort	acCmdHorizontalSpacingDecrease	acCmdRelationships
acCmdAlignBottom	acCmdHorizontalSpacingIncrease	acCmdRemoveFilterSort
acCmdAlignLeft	acCmdHorizontalSpacingMakeEqual	acCmdRemoveTable
acCmdAlignRight	acCmdHyperlinkDisplayText	acCmdRename
acCmdAlignToGrid	acCmdImport	acCmdRenameColumn
acCmdAlignTop	acCmdIndent	acCmdRepairDatabase
acCmdAlignToShortest	acCmdIndexes	acCmdReplace
acCmdAlignToTallest	acCmdInsertActiveXControl	acCmdReportHdrFtr
acCmdAnalyzePerformance	acCmdInsertChart	acCmdReset
acCmdAnalyzeTable	acCmdInsertFile	acCmdResolveConflicts
acCmdAnswerWizard	acCmdInsertFileIntoModule	acCmdRowHeight
acCmdApplyDefault	acCmdInsertHyperlink	acCmdRun
acCmdApplyFilterSort	acCmdInsertLookupColumn	acCmdRunMacro
acCmdAppMaximize	acCmdInsertLookupField	acCmdRunOpenMacro
acCmdAppMinimize	acCmdInsertObject	acCmdSave
acCmdAppMove	acCmdInsertPage	acCmdSaveAllModules
acCmdAppRestore	acCmdInsertPicture	acCmdSaveAs
acCmdAppSize	acCmdInsertProcedure	acCmdSaveAsASP
acCmdArrangeIconsAuto	acCmdInsertQueryColumn	acCmdSaveAsHTML
acCmdArrangeIconsByCreated	acCmdInsertRows	acCmdSaveAsIDC
acCmdArrangeIconsByModified	acCmdInsertTableColumn	acCmdSaveAsQuery
acCmdArrangeIconsByName	acCmdInvokeBuilder	acCmdSaveAsReport
acCmdArrangeIconsByType	acCmdJoinProperties	acCmdSaveLayout
acCmdAutoCorrect	acCmdLastPosition	acCmdSaveModuleAsText
acCmdAutoDial	acCmdLayoutPreview	acCmdSaveRecord
acCmdAutoFormat	acCmdLineUpIcons	acCmdSelectAll
acCmdBookmarksClearAll	acCmdLinkTables	acCmdSelectAllRecords
acCmdBookmarksNext	acCmdListConstants	acCmdSelectForm
acCmdBookmarksPrevious	acCmdLoadFromQuery	acCmdSelectRecord
acCmdBookmarksToggle	acCmdMacroConditions	acCmdSelectReport
acCmdBringToFront	acCmdMacroNames	acCmdSend
acCmdCallStack	acCmdMakeMDEFile	acCmdSendToBack
acCmdChangeToCheckBox	acCmdMicrosoftAccessHelpTopics	acCmdSetControlDefaults
acCmdChangeToComboBox	acCmdMicrosoftOnTheWeb	acCmdSetDatabasePassword
acCmdChangeToImage	acCmdMinimize	acCmdSetNextStatement
acCmdChangeToLabel	acCmdMoreWindows	acCmdShowAllRelationships
acCmdChangeToListBox	acCmdNewDatabase	acCmdShowDirectRelationships
acCmdChangeToOptionButton	acCmdNewObjectAutoForm	acCmdShowMembers
acCmdChangeToTextBox	acCmdNewObjectAutoReport	acCmdShowNextStatement
acCmdChangeToToggleButton	acCmdNewObjectClassModule	acCmdShowOnlyWebToolbar
acCmdClearAll	acCmdNewObjectForm	acCmdShowTable
acCmdClearAllBreakPoints	acCmdNewObjectMacro	acCmdSingleStep
acCmdClearGrid	acCmdNewObjectModule	acCmdSizeToFit
acCmdClearItemDefaults	acCmdNewObjectQuery	acCmdSizeToFitForm
acCmdClose	acCmdNewObjectReport	acCmdSizeToGrid
acCmdCloseWindow	acCmdNewObjectTable	acCmdSizeToNarrowest
acCmdColumnWidth	acCmdObjBrwFindWholeWordOnly	acCmdSizeToWidest
acCmdCompactDatabase	acCmdObjBrwGroupMembers	acCmdSnapToGrid
acCmdCompileAllModules	acCmdObjBrwHelp	acCmdSortAscending
acCmdCompileAndSaveAllModules	acCmdObjBrwShowHiddenMembers	acCmdSortDescending
acCmdCompileLoadedModules	acCmdObjBrwViewDefinition	acCmdSortingAndGrouping
acCmdCompleteWord	acCmdObjectBrowser	acCmdSpelling
acCmdControlWizardsToggle	acCmdOLEDDELinks	acCmdSQLView
acCmdConvertDatabase	acCmdOLEObjectConvert	acCmdStartupProperties
acCmdConvertMacrosToVisualBasic	acCmdOLEObjectDefaultVerb	acCmdStepOut
acCmdCopy	acCmdOpenDatabase	acCmdStepOver
acCmdCopyHyperlink	acCmdOpenHyperlink	acCmdStepToCursor
acCmdCreateMenuFromMacro	acCmdOpenNewHyperlink	acCmdStopLoadingPage
acCmdCreateRelationship	acCmdOpenSearchPage	acCmdSubformDatasheet
acCmdCreateReplica	acCmdOpenStartPage	acCmdSynchronizeNow
acCmdCreateShortcut	acCmdOpenTable	acCmdTabControlPageOrder
acCmdCreateShortcutMenuFromMacro	acCmdOpenURL	acCmdTableNames
acCmdCreateToolbarFromMacro	acCmdOptions	acCmdTabOrder
acCmdCut	acCmdOutdent	acCmdTestValidationRules
acCmdDatabaseProperties	acCmdOutputToExcel	acCmdTileHorizontally
acCmdDataEntry	acCmdOutputToRTF	acCmdTileVertically
acCmdDatasheetView	acCmdOutputToText	acCmdToggleBreakPoint
acCmdDateAndTime	acCmdPageHdrFtr	acCmdToggleFilter
acCmdDebugWindow	acCmdPageNumber	acCmdToolbarControlProperties
acCmdDelete	acCmdPageSetup	acCmdToolbarsCustomize
acCmdDeletePage	acCmdParameterInfo	acCmdTransparentBackground
acCmdDeleteQueryColumn	acCmdPaste	acCmdTransparentBorder
acCmdDeleteRecord	acCmdPasteAppend	acCmdUndo
acCmdDeleteRows	acCmdPasteSpecial	acCmdUnfreezeAllColumns
acCmdDeleteTab	acCmdPreviewEightPages	acCmdUnhideColumns
acCmdDeleteTableColumn	acCmdPreviewFourPages	acCmdUserAndGroupAccounts
acCmdDeleteWatch	acCmdPreviewOnePage	acCmdUserAndGroupPermissions
acCmdDesignView	acCmdPreviewTwelvePages	acCmdUserLevelSecurityWizard
acCmdDocMaximize	acCmdPreviewTwoPages	acCmdVerticalSpacingDecrease
acCmdDocMove	acCmdPrimaryKey	acCmdVerticalSpacingIncrease
acCmdDocRestore	acCmdPrint	acCmdVerticalSpacingMakeEqual
acCmdDocSize	acCmdPrintPreview	acCmdViewCode
acCmdDocumenter	acCmdProcedureDefinition	acCmdViewDetails
acCmdDuplicate	acCmdProperties	acCmdViewForms
acCmdEditHyperlink	acCmdPublish	acCmdViewGrid
acCmdEditingAllowed	acCmdPublishDefaults	acCmdViewLargeIcons
acCmdEditRelationship	acCmdQueryParameters	acCmdViewList
acCmdEditWatch	acCmdQueryTotals	acCmdViewMacros
acCmdEncryptDecryptDatabase	acCmdQueryTypeAppend	acCmdViewModules
acCmdEnd	acCmdQueryTypeCrosstab	acCmdViewQueries
acCmdExit	acCmdQueryTypeDelete	acCmdViewReports
acCmdFavoritesAddTo	acCmdQueryTypeMakeTable	acCmdViewRuler
acCmdFavoritesOpen	acCmdQueryTypeSelect	acCmdViewSmallIcons
acCmdFieldList	acCmdQueryTypeSQLDataDefinition	acCmdViewTables
acCmdFilterByForm	acCmdQueryTypeSQLPassThrough	acCmdViewToolbox
acCmdFilterBySelection	acCmdQueryTypeSQLUnion	acCmdWindowArrangeIcons
acCmdFilterExcludingSelection	acCmdQueryTypeUpdate	acCmdWindowCascade
acCmdFind	acCmdQuickInfo	acCmdWindowHide
acCmdFindNextWordUnderCursor	acCmdQuickPrint	acCmdWindowSplit
acCmdFindPrevious	acCmdQuickWatch	acCmdWindowUnhide
acCmdFindPrevWordUnderCursor	acCmdRecordsGoToFirst	acCmdWordMailMerge
acCmdFitToWindow	acCmdRecordsGoToLast	acCmdZoom10
acCmdFont	acCmdRecordsGoToNew	acCmdZoom25
acCmdFormatCells	acCmdRecordsGoToNext	acCmdZoom50
acCmdFormHdrFtr	acCmdRecordsGoToPrevious	acCmdZoom75
acCmdFormView	acCmdRecoverDesignMaster	acCmdZoom100
acCmdFreezeColumn	acCmdRedo	acCmdZoom150
acCmdGoBack	acCmdReferences	acCmdZoom200
acCmdGoContinue	acCmdRefresh	acCmdZoomBox
acCmdGoForward


Acción AgregarMenú

La acción AgregarMenú se puede utilizar para crear:

•	Una barra de menús personalizada para un formulario o informe. La barra de menús personalizada reemplaza a la barra de menús incorporada del formulario o informe.

•	Un menú contextual personalizado para un formulario, control de formulario o informe. El menú contextual personalizado reemplaza al menú contextual incorporado del formulario o del control del formulario o informe.

•	Una barra de menús global. La barra de menús global reemplaza a la barra de menús incorporada de todas las ventanas de Microsoft Access, excepto donde haya agregado una barra de menús personalizada de un formulario o informe.

•	Un menú contextual global. El menú contextual global reemplaza al menú contextual incorporado para campos en hojas de datos de tablas y de consultas, formularios en la vista Formulario, en la vista Hoja de datos y en la Vista preliminar, y en informes en la Vista preliminar, excepto donde haya agregado un menú contextual personalizado de un formulario, de un control de formulario o de informe.

Nota   Aunque todavía puede crear todos estos tipos de menús personalizados mediante las macros que contengan acciones AgregarMenú en Microsoft Access 97 (y todos los menús personalizados que haya creado mediante macros funcionarán), se recomienda que los cree mediante el cuadro de diálogo Personalizar, disponible seleccionando Barras de herramientas en el menú Ver y haciendo clic en Personalizar. Mientras se muestra el cuadro de diálogo Personalizar, puede crear fácilmente un nuevo menú o personalizar un menú incorporado.

Valores

La acción AgregarMenú utiliza los siguientes argumentos.

Argumento de acción	Descripción
Nombre del menú	Nombre del menú desplegable que va a agregar a la barra de menús personalizada o barra de menús global. Introduzca el nombre del menú en el cuadro Nombre del menú en la sección Argumentos de acción de la ventana Macro. Este argumento es obligatorio para las barras de menús personalizadas y las barras de menús globales. Se ignorará en el caso de los menús contextuales personalizados y los menús contextuales globales.
	Para crear una tecla de acceso de forma que pueda usar el teclado para elegir el menú, escriba un signo & antes de la letra que desea que sea la tecla de acceso. Esta letra aparecerrá subrayada en el nombre del menú de la barra de menús.
Nombre de macro de menú	Nombre del grupo de macros que contiene las macros de los comandos del menú. Este argumento es obligatorio. Si ejecuta una macro que contiene la acción AgregarMenú en la base de datos de biblioteca, Microsoft Access busca el grupo de macros con este nombre solamente en la base de datos actual.
Texto de la barra de estado	Texto que se presenta en la barra de estado cuando se selecciona el menú. Este argumento se ignora en el caso de los menús contextuales personalizados y los menús contextuales globales.
Comentarios

Para crear una barra de menús personalizada, un menú contextual personalizado, una barra de menús global o un menú contextual global mediante macros, debe hacer lo siguiente:

1.	Cree una macro de barra de menús que contenga una acción AgregarMenú para cada menú desplegable que desee que aparezca en la barra de menús personalizada o en la barra de menús global. En el caso de los menús contextuales personalizados y los menús contextuales globales, la macro de barra de menús debería contener simplemente una acción AgregarMenú.

2.	Asigne comandos a cada menú desplegable creando un grupo de macros para cada menú. Cada comando ejecuta el conjunto de acciones definidas por una macro del grupo de macros. Para los menús contextuales personalizados y los menús contextuales globales, cree simplemente un grupo de macros en el que cada macro contenga el conjunto de acciones de uno de los comandos del menú contextual.

3.	Adjunte la macro de barra de menús al objeto apropiado de Microsoft Access:

•	Para las barras de menús personalizadas, introduzca el nombre de la macro de la barra de menús en la propiedad BarraDeMenús (MenuBar) del formulario o informe.

•	Para los menús contextuales personalizados, introduzca el nombre de la macro de la barra de menús en la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) del formulario, control de formulario o informe.

•	Para las barras de menús globales, haga clic en Inicio en el menú Herramientas y luego en el cuadro de diálogo Inicio introduzca el nombre de la macro de barra de menús en el cuadro Barra de menús.

•	Para los menús contextuales globales, haga clic en Inicio en el menú Herramientas y luego, en el cuadro de diálogo Inicio, introduzca el nombre de la macro de barra de menús en el cuadro Barra de menú contextual.

Cada menú de la barra de menús requiere una acción AgregarMenú separada.

Las barras de menús globales y personalizadas y los menús contextuales reemplazan a las barras de menús y menús contextuales incorporadas de los objetos a los que se adjuntan. Si desea retener ciertos comandos de Microsoft Access para usarlos en estos menús, use la acción EjecutarComando para colocar los comandos en los grupos de macros de los menús deseados.

Mediante la acción EjecutarMacro en la macro del comando, puede ejecutar una macro desde un comando de menú.

Nota   Las acciones AgregarMenú sólo se pueden utilizar en una macro de barra de menús especificada por la propiedad BarraDeMenús (MenuBar) o la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) de un formulario, de un control de formulario o de un informe, o por el cuadro Barra de menús o el cuadro Barra de menús contextuales del cuadro de diálogo Inicio, disponible al hacer clic en Inicio en el menú Herramientas. Las macros de barras de menús deben contener sólo acciones AgregarMenú.

Cuando especifique una macro de barra de menús para un formulario o informe o para la base de datos, Microsoft Access ejecuta esta macro de barra de menús cuando se abre el formulario, informe o base de datos. Si realiza cambios a la macro de barra de menús o a los grupos de macros que definen los comandos en los menús desplegables mientras se encuentra abierto el formulario, informe o base de datos, debe cerrar el formulario, informe o base de datos y volver a abrirlo para ver los cambios en la barra de menú personalizada y en sus menús.

Cuando esté creando los grupos de macros que contienen los comandos para un menú personalizado, tenga en cuenta que:

•	En el grupo de macros, el nombre de la columna Nombre de macro de cada macro será el nombre del comando. El texto de la columna Comentario en esa fila aparecerá en la barra de estado cuando elija el comando.

•	Para crear una línea entre dos comandos de menú, escriba un guión ( - ) en la columna Nombre de macro entre los comandos de menú apropiados.

•	Para crear una clave de acceso de forma que pueda usar el teclado para elegir el comando, escriba un signo “&” antes de la letra que desee que sea la tecla de acceso en el nombre del comando. Esta letra aparecerá subrayada en el menú.

Puede crear un submenú de un menú personalizado o un menú contextual personalizado utilizando la acción AgregarMenú en un grupo de macros especificado por el argumento Nombre de macro de menú. Si coloca una acción AgregarMenú en dicho grupo de macros, Microsoft Access crea un submenú con el nombre del menú y el texto de la barra de estado especificado por los argumentos Nombre del menú y Texto de la barra de estado de esta acción AgregarMenú. El submenú contiene los comandos definidos por las macros del grupo, como se especifica en el argumento Nombre de macro de menú de la acción AgregarMenú. Las columnas Nombre de macro y Comentario de dicha acción AgregarMenú (que normalmente especifican el nombre del comando y el texto de barra de estado de un comando en el menú personalizado) se ignoran, ya que esta acción define un submenú, y no un comando del menú de nivel superior. Puede crear varios niveles de submenús, mediante las acciones AgregarMenú en los grupos de macros de cada nivel del menú.

Las condiciones de las macros sólo se admiten en la macro de la barra de menús de nivel superior. En otras palabras, puede utilizar una condición en una macro de barra de menús para determinar si se presentará un menú determinado en la barra de menús personalizada o en la barra de menús global, pero sólo para los menús del nivel superior de la barra de menús. Las condiciones no se pueden utilizar para mostrar u ocultar comandos o submenús de menús. También puede utilizar una condición para ocultar o mostrar un menú contextual personalizado o un menú contextual global.

La acción AgregarMenú no está disponible en Visual Basic. No obstante, en Visual Basic puede establecer la propiedad MenuBar o la propiedad ShortcutMenuBar para adjuntar una barra de menús personalizada o un menú contextual personalizado a un formulario, o control de un formulario o informe. Puede establecer la propiedad BarraDeMenúsDeInicio (StartupMenuBar) (el equivalente en el programa a configurar el cuadro Barra de menú) para crear una barra de menús global. También puede establecer la propiedad MenuBar del objeto Application para crear una barra de menús global. De forma similar, puede establecer la propiedad BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar) (el equivalente en el programa a configurar el cuadro Barra de menús contextuales) o la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) del objeto Application para crear un menú contextual global.


Acción AplicarFiltro

Puede usar la acción AplicarFiltro para aplicar un filtro, una consulta o una cláusula WHERE de SQL a una tabla, formulario o informe para limitar u ordenar registros en la tabla, o los registros de la tabla o consulta base del formulario o informe. En el caso de los informes, sólo puede utilizar esta acción en una macro especificada por la propiedad de evento AlAbrir (OnOpen) del informe.

Valores

La acción AplicarFiltro utiliza los siguientes argumentos.

Argumento de acción	Descripción
Nombre del filtro	Nombre de un filtro o consulta que limita u ordena los registros de la tabla, formulario o informe. Puede introducir el nombre de una consulta ya existente, o un filtro que se haya guardado como consulta en el cuadro Nombre del filtro en la sección Argumentos de acción de la ventana Macro.
Condición WHERE	Una cláusula WHERE de SQL válida (sin la palabra WHERE) o una expresión que limita los registros de la tabla, formulario o informe.
	Nota   En una expresión de argumento Condición WHERE, el lado izquierdo de la expresión contiene normalmente un nombre de campo de la tabla o consulta base del formulario o informe. El lado derecho de la expresión contiene normalmente los criterios que desea aplicar a este campo para limitar u ordenar los registros. Por ejemplo, los criterios pueden ser el nombre de un control de otro formulario que contiene el valor con el que desea que coincidan los registros del primer formulario. El nombre del control debe estar totalmente cualificado, por ejemplo: Forms!nombreformulario!nombrecontrol
	La longitud máxima del argumento Condición WHERE es de 256 caracteres. Si necesita introducir una cláusula WHERE de SQL más larga, utilice el método ApplyFilter del objeto DoCmd en Visual Basic. En Visual Basic puede introducir instrucciones con cláusulas WHERE de SQL de hasta 32.768 caracteres.
Nota    Puede utilizar uno o ambos argumentos. Puede utilizar el argumento Nombre del filtro si ya ha definido un filtro que proporciona los datos apropiados. Puede utilizar el argumento Condición WHERE para introducir directamente los criterios de restricción. Si utiliza ambos argumentos, Microsoft Access aplica la cláusula WHERE a los resultados del filtro.

Comentarios

Puede aplicar un filtro o consulta a un formulario en la vista Formulario o en la vista Hoja de datos.

El filtro y condición WHERE que se aplican pasan a ser los valores de la propiedad Filtro (Filter) del formulario o informe.

En el caso de las tablas y formularios, esta acción es similar a hacer clic en Aplicar filtro u ordenar del menú Registros, o a hacer clic en Aplicar filtro  [image]  en la barra de herramientas. El comando del menú o el botón aplican el filtro creado más recientemente a la tabla o formulario, mientras que la acción AplicarFiltro aplica un filtro o consulta específicos.

Si selecciona Filtro en el menú Registros y hace clic en Filtro u orden avanzado después de haber ejecutado la acción AplicarFiltro, la ventana Filtro u orden avanzado muestra los criterios de filtrado que haya elegido con esta acción.

Para quitar un filtro y mostrar todos los registros de una tabla o formulario, puede utilizar la acción MostrarTodosRegistros, el comando Quitar filtro u ordenar del menú Registros o Quitar filtro  [image]  en la barra de herramientas.

Cuando guarda una tabla o formulario, Microsoft Access guarda cualquier filtro definido actualmente en ese objeto, aunque no aplica el filtro de forma automática la próxima vez que abra el objeto (sí aplica de manera automática cualquier orden que se haya aplicado al objeto antes de que se guardara). Si desea aplicar un filtro de forma automática cuando se abre un formulario por primera vez, especifique una macro utilizando la acción AplicarFiltro o un procedimiento de evento utilizando el método ApplyFilter del objeto DoCmd como valor de la propiedad del evento OnOpen del formulario. También puede aplicar un filtro mediante la acción AbrirFormulario o AbrirInforme, o sus métodos correspondientes. Para aplicar un filtro de forma automática cuando abra un tabla por primera vez, puede abrir la tabla utilizando una macro que contenga la acción AbrirTabla, seguida inmediatamente de una acción AplicarFiltro.


Acción Bip

Puede usar la acción Bip para emitir un sonido a través del altavoz de la máquina.

Valores

La acción Bip no utiliza ningún argumento.

Comentarios

Puede utilizar la acción Bip para indicar las siguientes situaciones:

•	Se han producido cambios importantes en la pantalla.

•	Se ha introducido un tipo erróneo de datos en un control. Por ejemplo, el usuario ha introducido datos numéricos en un control cuadro de texto.

•	Una macro ha alcanzado un punto especificado o ha completado sus acciones.

La frecuencia y duración del sonido emitido depende del hardware, que puede variar entre las distintas máquinas.

Para ejecutar la acción Bip en Visual Basic, utilice el método Beep del objeto DoCmd.


Acción CancelarEvento

Puede usar la acción CancelarEvento para cancelar el evento que hizo que Microsoft Access ejecutase la macro que contiene esta acción. El nombre de la macro es el valor de una propiedad de evento como AntesDeActualizar (BeforeUpdate), AlAbrir (OnOpen), AlDescargar (OnUnload) o AlImprimir (OnPrint).

Valores

La acción CancelarEvento no utiliza ningún argumento.

Comentarios

Normalmente, en un formulario, se utiliza la acción CancelarEvento en una macro de validación con la propiedad de evento AntesDeActualizar (BeforeUpdate). Cuando un usuario introduce datos en un control o registro, Microsoft Access ejecuta la macro antes de agregar los datos a la base de datos. Si los datos no cumplen las condiciones de validación de la macro, la acción CancelarEvento cancela el proceso de actualización antes de que comience.

Puede utilizar esta acción con la acción CuadroMsj para indicar que los datos no han pasado las condiciones de validación y para proporcionar información útil sobre la clase de datos que deberían introducirse.

La acción CancelarEvento puede cancelar los siguientes eventos.

ApplyFilter	Delete	MouseDown
BeforeDelConfirm	Exit	NoData
BeforeInsert	Filter	Open
BeforeUpdate	Format	Print
DblClick	KeyPress	Unload
Nota   Puede usar la acción CancelarEvento con el evento MouseDown solamente para cancelar el evento que se produce al hacer clic con el botón secundario del mouse.

Si el valor de la propiedad del evento AlHacerDobleClic (OnDblClick) especifica una macro que contiene la acción CancelarEvento, la acción cancela el evento DblClick.

Para los eventos que se puedan cancelar, el comportamiento predeterminado de este evento (esto es, lo que normalmente hace Microsoft Access cuando ocurre el evento) se produce después de la ejecución de la macro para dicho evento. Esto le permite cancelar el comportamiento predeterminado. Por ejemplo, cuando hace doble clic en una palabra, si el punto de inserción está en un cuadro de texto, Microsoft Access normalmente selecciona la palabra. Puede cancelar este comportamiento predeterminado de la macro para el evento DblClick y realizar alguna otra acción, como abrir un formulario que contenga información sobre el dato del cuadro de texto. Para los eventos que no se puedan cancelar, el comportamiento predeterminado ocurre antes de que se ejecute la macro.

Nota Si la propiedad de evento AlDescargar (OnUnload) del formulario especifica una macro que lleva a cabo una acción CancelarEvento, no podrá cerrar el formulario. En este caso debe corregir la condición que provocó la acción CancelarEvento, o bien abrir la macro y eliminar la acción CancelarEvento para cerrar el formulario. Si el formulario es un formulario modal, no va a poder abrir la macro.

Para llevar a cabo la acción CancelarEvento en Visual Basic, utilice el método CancelEvent del objeto DoCmd.


Acción Cerrar

Puede utilizar la acción Cerrar para cerrar una ventana determinada de Microsoft Access o la ventana activa si no se especifica ninguna.

Valores

La acción Cerrar utiliza los siguientes argumentos.

Argumento de acción	Descripción
Tipo de objeto	El tipo de objeto cuya ventana desea cerrar. Haga clic en Tabla, Consulta, Formulario, Informe, Macro o Módulo en el cuadro Tipo de objeto en la sección Argumentos de acción de la ventana Macro. Para seleccionar la ventana activa, deje este argumento en blanco.
Nombre del objeto	El nombre del objeto que se va a cerrar. El cuadro Nombre del objeto muestra todos los objetos en la base de datos del tipo seleccionado con el argumento Tipo de objeto. Haga clic en el objeto que se va a cerrar. Si dejó en blanco el cuadro Tipo de objeto, deje también en blanco este cuadro.
Guardar	Indica si se guardan o no los cambios del objeto cuando éste se cierra. Puede hacer clic en Sí (guardar el objeto), No (cerrar el objeto sin guardarlo) o Preguntar (preguntar al usuario si debe o no guardar el objeto). El valor predeterminado es Preguntar.
Comentarios

La acción Cerrar funciona sobre todos los objetos de la base de datos que el usuario puede abrir o cerrar de forma explícita. Esta acción tiene el mismo efecto que seleccionar un objeto y luego cerrarlo haciendo clic en Cerrar del menú Archivo, hacer clic en Cerrar del menú de control  de la ventana del objeto, o hacer clic en el botón Cerrar  [image]  del objeto.

Si el argumento Guardar se establece a Preguntar y el objeto no se ha guardado antes de que la acción Cerrar se haya llevado a cabo, un cuadro de diálogo pregunta al usuario si desea guardar el objeto antes de cerrar la macro. Si ha establecido el argumento Activar advertencias de la acción EstablecerAdvertencias a No, no se muestra el cuadro de diálogo y el objeto se guarda de manera automática.

Para ejecutar la acción Cerrar en Visual Basic, utilice el método Close del objeto DoCmd.


Acción CopiarObjeto

Puede utilizar la acción CopiarObjeto para copiar el objeto de la base de datos especificado a una base de datos diferente de Microsoft Access o a la misma base de datos bajo un nuevo nombre. Por ejemplo, puede copiar o guardar un objeto existente en otra base de datos o crear rápidamente un objeto similar con algunos cambios.

Valores

La acción CopiarObjeto utiliza los siguientes argumentos.

Argumento de acción	Descripción
Base de datos de destino	Ruta de acceso y nombre de archivo válidos de la base de datos de destino. Introduzca la ruta de acceso y el nombre de archivo en el cuadro Base de datos de destino de la sección Argumentos de acción de la ventana Macro. Deje este argumento en blanco si desea elegir la base de datos actual. Si ejecuta una macro que contiene la acción CopiarObjeto en una base de datos de biblioteca y deja este argumento en blanco, Microsoft Access copiará el objeto en la base de datos de biblioteca.
Nombre nuevo	Un nombre nuevo para el objeto. Cuando copie a una base de datos diferente, deje este argumento en blanco para mantener el mismo nombre.
Tipo del objeto de origen	El tipo de objeto que desea copiar. Haga clic en Tabla, Consulta, Formulario, Informe, Macro o Módulo. Para copiar el objeto seleccionado en la ventana Base de datos, deje este argumento en blanco.
Nombre del objeto de origen	El nombre del objeto a ser copiado. El cuadro Nombre del objeto de origen muestra todos los objetos en la base de datos del tipo seleccionado en el argumento Tipo del objeto de origen. En el cuadro Nombre del objeto de origen, haga clic en el objeto a copiar. Si deja el argumento Tipo del objeto de origen en blanco, deje también en blanco este argumento. Si ejecuta una macro que contenga la acción CopiarObjeto en una base de datos de biblioteca, Microsoft Access busca primero el objeto con este nombre en la base de datos de biblioteca, y luego en la base de datos actual.
Comentarios

En esta acción, debe introducir un valor para uno o para los dos argumentos Base de datos de destino y Nombre nuevo.

Si deja los argumentos Tipo del objeto de origen y Nombre del objeto de origen en blanco, Microsoft Access copia los objetos seleccionados en la ventana Base de datos. Para seleccionar un objeto en la ventana Base de datos, puede usar la acción SeleccionarObjeto con el argumento En ventana Base de datos establecido a Sí.

La acción CopiarObjeto es similar a seleccionar un objeto de la ventana Base de datos, hacer clic en Copiar del menú Edición y luego hacer clic en Pegar del menú Edición. Entonces aparece el cuadro de diálogo Pegar como, con lo que puede dar al objeto un nuevo nombre. La acción CopiarObjeto realiza todos estos pasos de manera automática.

También puede copiar un objeto seleccionado en la ventana Base de datos, o un objeto abierto en la ventana Tabla, en la ventana Consulta, en la ventana Formulario, en la ventana Informe, en la ventana Macro o en la ventana Módulo haciendo clic en Guardar como o exportar del menú Archivo. El cuadro de diálogo Guardar como da la opción de guardar una copia del objeto de la base de datos actual con un nombre nuevo, o guardar el objeto en otra base de datos. Si el objeto se ha guardado y usted lo guarda en la base de datos actual con un nuevo nombre, la versión original todavía existirá con su antiguo nombre.

La ruta de acceso y el nombre del archivo de la base de datos de destino deben existir antes de que la macro ejecute la acción CopiarObjeto. Si no existen, Microsoft Access muestra un mensaje de error.

Para ejecutar la acción CopiarObjeto en Visual Basic, utilice el método CopyObject del objeto DoCmd.


Acción EjecutarElementoMenú

Puede usar la acción EjecutarElementoMenú para llevar a cabo un comando de menú de Microsoft Access.

Nota   En Microsoft Access 97, la acción EjecutarElementoMenú se ha reemplazado por la acción EjecutarComando. La acción EjecutarElementoMenú sólo se incluye en esta versión de Microsoft Access por compatibilidad con las versiones anteriores. Cuando abra y guarde una macro de una versión anterior de Microsoft Access que contenga una acción EjecutarElementoMenú, la acción y sus argumentos se convertirán automáticamente a la acción EjecutarComando equivalente. La acción EjecutarElementoMenú ya no aparece en la lista de acciones de la ventana Macro de Microsoft Access 97.

Cuando convierte una base de datos Microsoft Access de una versión anterior de Microsoft Access, es posible que algunos comandos ya no estén disponibles. Puede haber cambiado el nombre del comando, o puede que éste se haya movido a un menú distinto, o que ya no esté disponible en Microsoft Access 97. Las acciones EjecutarElementoMenú para estos comandos no se pueden convertir a acciones EjecutarComando. Cuando abra la macro, Microsoft Access mostrará una acción EjecutarComando con el argumento Comando en blanco para tales comandos. Debe modificar la macro e introducir una acción EjecutarComando válida, o eliminar la acción. Para obtener una lista de los comandos de las versiones anteriores de Microsoft Access que ya no están disponibles en Microsoft Access 97, consulte Comandos de la acción EjecutarElementoMenú no disponibles con la acción EjecutarComando.

Puede utilizar esta acción para:

•	Ejecutar cualquier comando de Microsoft Access desde una macro. Debe seleccionar un comando que sea apropiado para la vista actual cuando la macro ejecute el comando. Por ejemplo, una macro no puede ejecutar ninguno de los comandos del menú Registros si el objeto activo está en la vista Diseño de tabla, en la vista Diseño de formulario, en la vista Diseño de consulta o en la vista Diseño de informe.

•	Agregar un comando Microsoft Access a una barra de menús personalizada para un formulario o informe, o a un menú en la barra de menús global. Por cada comando que desee agregar, introduzca una acción EjecutarElementoMenú en el grupo de macros de ese menú.

•	Agregar un comando Microsoft Access a un menú contextual personalizado para un formulario, control de formulario o informe o al menú contextual global. Por cada comando que desee agregar, introduzca una acción EjecutarElementoMenú en el grupo de macros del menú contextual global o personalizado.

Valores

La acción EjecutarElementoMenú utiliza los siguientes argumentos.

Argumento de acción	Descripción
Barra de menús	El nombre de la barra de menús que contiene el comando que desea ejecutar. El nombre de la barra de menús es el nombre de una de las vistas en la que aparece la barra de menús. Introduzca el nombre de la barra de menús en el cuadro Barra de menús en la sección Argumentos de acción de la ventana Macro. Este argumento es obligatorio.
Nombre del menú	El nombre del menú que contiene el comando que desea ejecutar. Este argumento es obligatorio.
Comando	El comando que desea ejecutar. Este argumento es obligatorio.
Subcomando	El subcomando que desea ejecutar. Esto sólo se aplica si el comando deseado tiene un submenú.
Comentarios

La acción EjecutarElementoMenú tiene el mismo efecto que hacer clic en el comando especificado del menú de Microsoft Access. Si al hacer clic en un comando se muestra un cuadro de diálogo, también ahora se presenta el cuadro de diálogo cuando ejecuta la acción EjecutarElementoMenú. Puede utilizar la acción EnviarTeclas para introducir la información apropiada en el cuadro de diálogo.

Para ejecutar la acción EjecutarElementoMenú en Visual Basic, utilice el método DoMenuItem del objeto DoCmd.


Acción Eco

Puede usar la acción Eco para especificar si está activado el eco. Por ejemplo, puede usar esta acción para ocultar o mostrar los resultados de una macro mientras se ejecuta.

Valores

La acción Eco utiliza los siguientes argumentos.

Argumento de acción	Descripción
Eco activo	Haga clic en Sí (activar eco) o No (desactivar eco) en el cuadro Eco activo de la sección Argumentos de acción de la ventana Macro. El valor predeterminado es Sí.
Texto de la barra de estado	El texto a mostrar en la barra de estado cuando se desactiva el eco. Por ejemplo, cuando se desactiva el eco, la barra de estado puede mostrar "La macro está ejecutándose."
Comentarios

Cuando Microsoft Access ejecuta una macro, la actualización de la pantalla muestra a menudo información que no es esencial para el funcionamiento de la macro. Cuando establece el argumento Eco activo a No, la macro se ejecuta sin actualizar la pantalla. Cuando termina la macro, Microsoft Access devuelve de forma automática el eco a activado y repinta la ventana. El valor No del argumento Eco activo no afecta a la macro o sus resultados.

La acción Eco no suprime la presentación de los cuadros de diálogo modales, como los mensajes de error o los formularios emergentes como, por ejemplo, las hojas de propiedades. Puede usar éstos para obtener o presentar información cuando el eco está desactivado. Use la acción EstablecerAdvertencias para desactivar todos los mensajes o los cuadros de diálogo, excepto los cuadros de mensajes de error y los cuadros de diálogo que requieran que el usuario introduzca información.

Puede ejecutar la acción Eco más de una vez en una macro. Esto permite cambiar el texto de la barra de estado mientras se ejecuta la macro.

Si desactiva el eco, puede usar la acción RelojDeArena para cambiar el puntero del mouse a un reloj de arena (o al icono del mouse que haya establecido en "Ocupado" en Microsoft Windows 95 o en Windows NT 4.0, o en "Espera" en Windows NT 3.51) para ofrecer una indicación visual de que la macro se está ejecutando.

Para ejecutar la acción Eco en Visual Basic, use el método Echo del objeto DoCmd.


Acción BuscarSiguiente

Puede usar la acción BuscarSiguiente para buscar el siguiente registro que cumpla los criterios especificados por la anterior acción BuscarRegistro o el cuadro de diálogo Buscar en campo, disponible al hacer clic en Buscar en el menú Edición. Puede usar la acción BuscarSiguiente para buscar registros de manera repetida. Por ejemplo, puede moverse sucesivamente a través de todos los registros de un cliente determinado.

Valores

La acción BuscarSiguiente no utiliza argumentos. La acción BuscarSiguiente busca el siguiente registro que cumple los criterios establecidos por la acción BuscarRegistro o en el cuadro de diálogo Buscar en campo. Los argumentos de la acción BuscarRegistro coinciden con las opciones que se pueden espeificar en el cuadro de diálogo Buscar en campo.

Para establecer los criterios de búsqueda, use la acción BuscarRegistro. Normalmente, se introduce la acción BuscarRegistro en una macro y a continuación se usa la acción BuscarSiguiente para buscar los subsiguientes registros que cumplen los mismos criterios. Para buscar registros que sólo cumplan ciertas condiciones, puede introducir una expresión condicional en la columna Condición de la fila de acción de la acción BuscarSiguiente.

Comentarios

Esta acción tiene el mismo efecto que usar el botón Buscar siguiente en el cuadro de diálogo Buscar en campo.

Nota   Mientras que la acción BuscarRegistro se corresponde al comando Buscar del menú Edición para tablas, consultas y formularios, no se corresponde con el comando Buscar del menú Edición de la ventana Módulo. No se pueden usar las acciones BuscarRegistro o BuscarSiguiente para buscar texto en los módulos.

Sugerencia Si ha establecido el argumento Sólo el campo activo de la acción BuscarRegistro a Sí, puede que necesite usar la acción IrAControl para mover el enfoque al control que contiene los datos que está buscando antes de utilizar la acción BuscarSiguiente.

Microsoft Access 97 y Microsoft Access 95 se comportan de forma distinta a como lo hacían las versiones anteriores con respecto a dónde inicia la acción BuscarSiguiente la búsqueda de la siguiente instancia de los criterios de búsqueda. En las versiones anteriores de Microsoft Access, la búsqueda siempre empieza con el siguiente registro en el recordset. A partir de Microsoft Access 95, si el texto seleccionado actualmente es el mismo que el texto seleccionado en el momento en el que se ejecuta la macro BuscarSiguiente, la búsqueda se inicia inmediatamente siguiendo la selección en el mismo campo que la misma y en el mismo registro. En caso contrario, la búsqueda se inicia al principio del registro activo. Esto le permite buscar múltiples instancias de los mismos criterios de búsqueda que pudieran aparecer en un único registro, mientras que en la versión 2.0 de Microsoft Access, estaba limitado a buscar sólo la primera instancia de los criterios de búsqueda en un registro.

Sin embargo, observe que si usa un botón de comando para ejecutar una macro que contenga la acción BuscarSiguiente, se buscará de forma repetida la primera instancia de los criterios de búsqueda . Esto es debido a que hacer clic en el botón del comando cambia el enfoque desde el campo que contiene el valor buscado. La acción BuscarSiguiente empezará la búsqueda, por tanto, desde el principio del registro. Se buscará de forma repetida la primera instancia del criterio de búsqueda en el mismo registro. Para evitar este problema, ejecute la macro usando una técnica que no cambie el enfoque, como un botón personalizado de una barra de herramientas o una combinación de teclas definida en una macro AsignarTeclas, o establezca el enfoque en la macro al campo que contiene los criterios de búsqueda antes de llevar a cabo la acción BuscarSiguiente.

El mismo comportamiento se produce si usa un botón de comando para ejecutar una macro que contenga la acción BuscarRegistro con el argumento Buscar primero establecido a No. Para obtener información acerca de cómo busca los registros la acción BuscarSiguiente, busque en Microsoft Knowledge Base el artículo Q150665, "BuscarSiguiente no avanza al siguiente registro que se va a buscar." Para vincular la página de búsqueda de Microsoft Access Knowledge Base, haga clic en  [image]. Para obtener información acerca del acceso a Knowledge Base u otros recursos técnicos en pantalla, consulte Conexión a los recursos técnicos de Microsoft.

Para ejecutar la acción BuscarSiguiente en Visual Basic, use el método FindNext del objeto DoCmd.


Acción BuscarRegistro

Puede usar la acción BuscarRegistro para buscar la primera instancia de datos que cumplan los criterios especificados por los argumentos de BuscarRegistro. Esto puede ser en el registro activo, en un registro anterior o posterior, o en el primer registro. Puede buscar registros en la hoja de datos de la tabla, en la hoja de datos de la consulta, en la hoja de datos del formulario o en el formulario que se encuentre acitvo.

Valores

La acción BuscarRegistro utiliza los siguientes argumentos.

Argumento de acción	Descripción
Buscar	Especifica los datos que desea buscar en el registro. Introduzca el texto, número o fecha que desea buscar, o escriba una expresión, precedida de un signo igual (=), en el cuadro Buscar de la sección Argumentos de acción de la ventana Macro. Puede usar caracteres comodín. Este argumento es obligatorio.
Coincidir	Especifica dónde están ubicados los datos en el campo. Puede especificar una búsqueda de datos en cualquier parte del campo (Cualquier parte del campo), de datos que llenan el campo completo (Campo completo), o de datos ubicados al principio del campo (Comienzo del campo). El valor predeterminado es Campo completo.
Mayúsculas y minúsculas	Especifica si la búsqueda tiene en cuenta la coincidencia de mayúsculas y minúsculas (las letras mayúsculas y minúsculas deben coincidir exactamente). Haga clic en Sí (llevar a cabo una búsqueda en la que coincidan las mayúsculas y minúsculas) o No (buscar sin que coincidan exactamente las letras mayúsculas y minúsculas). El valor predeterminado es No.
Buscar	Especifica si la búsqueda se produce desde el registro activo hacia el principio de los registros (Arriba); hacia abajo hacia el final de los registros (Abajo); o desde el registro activo hacia el final de los registros y luego desde el principio de los registros hasta el registro activo, de forma que se busque en todos los registros (Todos). El valor predeterminado es Todos.
Buscar con formato	Especifica si la búsqueda incluye los datos con formato. Haga clic en Sí (Microsoft Access busca los datos según tienen el formato y se presentan en el campo) o No (Microsoft Access busca los datos tal como están almacenados en la base de datos, que no siempre coincide con lo que se muestra). El valor predeterminado es No. Puede utilizar esta característica para limitar la búsqueda de los datos de un formato particular. Por ejemplo, haga clic en Sí e introduzca 1,234 en el argumento Buscar para buscar un valor de 1,234 en un campo con formato para incluir comas. Haga clic en No si desea introducir 1234 para buscar los datos de este campo. Para buscar fechas, haga clic en Sí para buscar una fecha con el formato exacto, tal como 03-Mar-1991. Si hace clic en No, introduzca la fecha en el argumento Buscar en el formato establecido en el cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. (Es decir, el grupo Fecha corta que se encuentra en la ficha Fecha del cuadro de diálogo Propiedades de Configuración regional.) Por ejemplo, si el cuadro Formato de fecha corta se establece a d/MM/aa, puede introducir 3/12/91, y Microsoft Access buscará todas las entradas de un campo Fecha que se correspondan con Marzo 9, 1991, independientemente del formato que tenga el campo. Nota   Este argumento sólo tiene efecto si el campo actual es un control dependiente, el argumento Coincidir está establecido a Hacer coincidir todo el campo, el argumento Sólo el campo activo está establecido a Sí y el argumento Mayúsculas y minúsculas está establecido a No. Si establece Mayúsculas y minúsculas a Sí o Sólo el campo activo a No, también debe establecer Buscar con formato a Sí.
Sólo el campo activo	Especifica si la búsqueda se limita al campo actual de cada registro o si incluye todos los campos de cada registro. La búsqueda del campo activo es más rápida. Haga clic en Sí (limitar la búsqueda al campo actual) o No (buscar en todos los campos de cada registro). El valor predeterminado es Sí.
Buscar primero	Especifica si la búsqueda comienza en el primer registro o en el registro activo. Haga clic en Sí (empezar por el primer registro) o No (empezar en el registro activo). El valor predeterminado es Sí.
Comentarios

Cuando una macro ejecuta la acción BuscarRegistro, Microsoft Access busca los datos especificados en los registros (el orden de la búsqueda viene determinado por el valor del argumento Buscar). Cuando Microsoft Access encuentra los datos especificados, los datos se seleccionan en el registro.

La acción BuscarRegistro es equivalente a hacer clic en Buscar en el menú Edición y sus argumentos son los mismos que las opciones del cuadro de diálogo Buscar en campo, disponible al hacer clic en Buscar en el menú Edición. Si establece el argumento BuscarRegistro en la ventana Macro y a continuación ejecuta la macro, verá las opciones correspondientes seleccionadas en el cuadro de diálogo Buscar en campo cuando haga clic en Buscar.

Microsoft Access retiene los argumentos más recientes de BuscarRegistro durante una sesión de la base de datos, de forma que no necesita introducir de manera repetida los mismos criterios según lleve a cabo varias operaciones de BuscarRegistro. Si deja un argumento en blanco, Microsoft Access utiliza el valor más reciente del argumento, tal y como se haya establecido por una acción previa BuscarRegistro o en el cuadro de diálogo Buscar en campo.

Cuando desee buscar un registro mediante una macro, utilice la acción BuscarRegistro; no la acción EjecutarComando con los argumentos establecidos para ejecutar el comando Buscar.

Nota   Mientras que la acción BuscarRegistro se corresponde con Buscar del menú Edición para tablas, consultas y formularios, no se corresponde con Buscar del menú Edición de la ventana Módulo. No puede utilizar la acción BuscarRegistro para buscar texto en los módulos.

Microsoft Access 97 y Microsoft Access 95 se comportan de forma distinta a como lo hacían las versiones anteriores con respecto a dónde inicia la acción BuscarRegistro la búsqueda de la siguiente instancia de los criterios de búsqueda cuando el argumento Buscar primero está establecido a No. En las versiones de Microsoft Access anteriores a Microsoft Access 95, la búsqueda siempre empieza con el siguiente (previo o siguiente) registro en el recordset. A partir de Microsoft Access 95, si el texto seleccionado actualmente es el mismo que el texto seleccionado en el momento en el que se ejecuta la macro BuscarRegistro, la búsqueda se inicia inmediatamente siguiendo la selección en el mismo campo que la selección y en el mismo registro. En caso contrario, la búsqueda se inicia al principio del registro actual. Esto le permite buscar múltiples instancias de los mismos criterios de búsqueda que pudieran aparecer en un único registro, mientras que en la versión 2.0 de Microsoft Access, estaba limitado a buscar sólo la primera instancia de los criterios de búsqueda en un registro.

Sin embargo, observe que si usa un botón de comando para ejecutar una macro que contenga la acción BuscarRegistro, se buscará de forma repetida la primera instancia de los criterios de búsqueda. Esto es debido a que hacer clic en el botón del comando cambia el enfoque desde el campo que contiene el valor buscado. La acción BuscarRegistro empezará por tanto la búsqueda desde el principio del registro. Se buscará de forma repetida la primera instancia del criterio de búsqueda en el mismo registro. Para evitar este problema, ejecute la macro usando una técnica que no cambie el enfoque, como un botón personalizado de barra de herramientas o una combinación de teclas definida en una macro AsignarTeclas o establezca el enfoque en la macro al campo que contiene los criterios de búsqueda antes de llevar a cabo la acción BuscarRegistro.

El mismo comportamiento se produce si usa un botón de comando para ejecutar una macro que contenga la acción BuscarSiguiente. Para obtener información acerca de cómo busca los registros la acción BuscarSiguiente, busque en la Microsoft Knowledge Base el artículo Q150665, "BuscarSiguiente no avanza al siguiente registro a buscar." Para vincular la página de búsqueda de Microsoft Access Knowledge Base, haga clic en  [image]. Para obtener información acerca del acceso a Knowledge Base u otros recursos técnicos en pantalla, consulte Conexión a los recursos técnicos de Microsoft.

Para ejecutar la acción BuscarRegistro en Visual Basic, use el método FindRecord del objeto DoCmd.


Acción IrAControl

Puede usar la acción IrAControl para mover el enfoque al campo o control especificado en el registro activo del formulario abierto, la hoja de datos del formulario abierto, la hoja de datos de la tabla abierta o la hoja de datos de la consulta abierta. Puede utilizar esta acción cuando desee que un campo o control determinado tenga el enfoque. Este campo o control se puede entonces utilizar para las acciones de comparación o las acciones de BuscarRegistro. También puede utilizar esta acción para desplazarse por un formulario de acuerdo con ciertas condiciones. Por ejemplo, si el usuario introduce No en un control Casado de un formulario de seguro de enfermedad, el enfoque puede, de forma automática, saltarse el control Nombre esposa y moverse al siguiente control.

Valores

La acción IrAControl utiliza el siguiente argumento.

Argumento de acción	Descripción
Nombre del control	El nombre del campo o control donde desea el enfoque. Introduzca el nombre del campo o control en el cuadro Nombre del control de la sección Argumentos de acción de la ventana Macro. Este argumento es obligatorio. Nota Introduzca sólo el nombre del campo o control en el argumento Nombre del control, no el identificador completo, como Forms!Productos![IdProducto].
Comentarios

No puede utilizar la acción IrAControl para trasladar el enfoque a un control de un formulario oculto.

Sugerencia   Puede utilizar la acción IrAControl para moverse a un subformulario, que es un tipo de control. Después puede usar la acción IrARegistro para trasladarse a un registro particular en el subformulario. También puede moverse a un control en un subformulario usando la acción IrAControl para moverse primero al subformulario y luego al control del subformulario.

Para ejecutar la acción IrAControl en Visual Basic, utilice el método GoToControl del objeto DoCmd. También puede utilizar el método SetFocus para mover el enfoque a un control de un formulario o a alguno de sus subformularios o a un campo de una tabla, consulta u hoja de datos del formulario que esté abierto.


Acción IrAPágina

Puede usar la acción IrAPágina para mover el enfoque del formulario activo al primer control de una página especificada. Puede usar esta acción si ha creado un formulario con saltos de página que contenga grupos de información relacionada. Por ejemplo, podría tener un formulario Empleados con información personal en una página, información de la oficina en otra y la información de las ventas en una tercera. Puede utilizar la acción IrAPágina para moverse a la página deseada. También puede presentar múltiples páginas de información en un único formulario mediante controles ficha.

Valores

La acción IrAPágina utiliza los siguientes argumentos.

Argumento de acción	Descripción
Página número	Número de la página a la que desea trasladar el enfoque. Introduzca el número de página en el cuadro Página número de la sección Argumentos de acción de la ventana Macro. Si deja este argumento en blanco, el enfoque permanece en la página activa. Puede usar los argumentos Derecho y Abajo para mostrar la parte de la página que desea ver.
Derecho	Posición actual horizontal de la parte de la página, medida desde el borde izquierdo de la ventana que la contiene, que aparecerá en el borde izquierdo de la ventana. Es obligatorio si especifica un argumento Abajo.
Abajo	Posición actual vertical de la parte de la página, medida desde el borde superior de la ventana que la contiene, que aparecerá en el borde superior de la ventana. Es obligatorio si especifica un argumento Derecho.
Nota   Los argumentos Derecho y Abajo pueden especificarse en pulgadas o centímetros, dependiendo de las unidades establecidas en el Sistema de medida en la ficha Números del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows.

Comentarios

Puede usar esta acción para seleccionar el primer control (tal como se define por el orden de tabulación del formulario) de la página especificada. Use la acción IrAControl para moverse a un control determinado en el formulario.

Puede usar los argumentos Derecho y Abajo para los formularios con páginas mayores que la ventana Microsoft Access. Use el argumento Página número para moverse a la página deseada, y luego use los argumentos Derecho y Abajo para mostrar la parte de la página que desea abrir. Microsoft Access muestra la parte de la página cuya esquina superior izquierda está a la distancia especificada de la esquina superior izquierda de la página.

No puede utilizar la acción IrAPágina para mover el enfoque a una página de un formulario oculto.

Para ejecutar la acción IrAPágina en Visual Basic, use el método GoToPage del objeto DoCmd.


Acción IrARegistro

Puede usar la acción IrARegistro para hacer que el registro especificado sea el registro activo en una tabla o formulario abierto o el conjunto de resultados de una consulta.

Valores

La acción IrARegistro utiliza los siguientes argumentos.

Argumento de acción	Descripción
Tipo de objeto	El tipo de objeto que contiene el registro al que desea hacer el actual. Haga clic en Tabla, Consulta o Formulario en el cuadro Tipo de objeto de la sección Argumentos de acción de la ventana Macro. Deje en blanco este argumento para seleccionar el objeto activo.
Nombre del objeto	El nombre del objeto que contiene el registro al que desea hacer el registro actual. El cuadro Nombre del objeto muestra todos los objetos en la base de datos actual del tipo seleccionado por el argumento Tipo de objeto. Si dejó en blanco el argumento Tipo de objeto, deje también en blanco este argumento.
Registro	El registro a convertir en el registro activo. Haga clic en Anterior, Siguiente, Primero, Último, Ir a o Nuevo en el cuadro Registro. El valor predeterminado es Siguiente.
Desplazamiento	Un número entero o expresión que se evalúa como un número entero. Una expresión debe estar precedida por un signo igual (=). Este argumento especifica el registro que pasa a ser el registro activo. Puede usar Desplazamiento de dos formas: • Cuando el argumento Registro es Siguiente o Anterior, Microsoft Access se desplaza, hacia adelante o hacia atrás, el número de registros especificados en el argumento Desplazamiento. • Cuando el argumento de Registro es Ir a, Microsoft Access se desplaza al registro con el número igual al argumento Desplazamiento. El número de registro se muestra en el cuadro de número de registro en la parte inferior de la ventana.
	Nota   Si usa el valor Primero, Último o Nuevo en el argumento Registro, Microsoft Access ignora el argumento Desplazamiento. Si introduce un argumento Desplazamiento que es demasiado grande, Microsoft Access muestra un mensaje de error. No puede introducir números negativos para el argumento Desplazamiento.
Comentarios

Si el enfoque está en un control determinado de un registro, esta acción lo deja en el mismo control que el del nuevo registro.

Puede usar el valor Nuevo en el argumento Registro para moverse al registro en blanco al final de un formulario o tabla, de manera que pueda introducir nuevos datos.

Esta acción es similar a hacer clic en Ir a en el menú Edición. Los subcomandos Primer registro, Último, Siguiente, Anterior y Nuevo registro del comando Ir a tienen el mismo efecto en el objeto seleccionado que los valores Primero, Último, Siguiente, Anterior y Nuevo en el argumento Registro. También puede moverse a los registros usando los botones de desplazamiento de la parte inferior de la pantalla.

Puede usar la acción IrARegistro para hacer que un registro de un formulario oculto sea el registro activo si especifica el formulario oculto en los argumentos Tipo de objeto y Nombre del objeto.

Para ejecutar la acción IrARegistro en Visual Basic, use el método GoToRecord del objeto DoCmd.


Acción RelojDeArena

Puede usar la acción RelojDeArena para cambiar el puntero del mouse por la imagen de un reloj de arena (u otro icono que haya elegido) mientras se ejecuta una macro. Esta acción puede proporcionar una indicación visual de que la macro está ejecutándose. Resulta especialmente útil cuando una acción de macro o la propia macro necesita mucho tiempo para su ejecución.

Valores

La acción RelojDeArena tiene el siguiente argumento.

Argumento de acción	Descripción
Reloj de arena activo	Haga clic en Sí (mostrar el icono) o No (mostrar el puntero normal del mouse) en el cuadro Reloj de arena activo en la sección Argumentos de acción de la ventana Macro. El valor predeterminado es Sí.
Comentarios

Esta acción se usa a menudo si ha desactivado el eco usando la acción Eco. Cuando el eco está desactivado, Microsoft Access suspende las actualizaciones de la pantalla hasta que se finaliza la macro.

Microsoft Access restablece automáticamente el argumento Reloj de arena activo a No cuando la macro finaliza la ejecución.

Notas

•	En Microsoft Windows 95 y Windows NT 4.0, el icono mostrado por esta acción es el icono que se establece en Ocupado en la ficha Punteros del cuadro de diálogo Propiedades de Mouse del Panel de control de Windows (el valor predeterminado es un icono de reloj de arena animado).

•	En Windows NT 3.51, éste es el icono establecido en Espera en el cuadro de diálogo Cursores del Panel de control de Windows (el valor predeterminado es también un icono de reloj de arena).

•	En cualquier caso, puede elegir otro icono si lo prefiere.

Para ejecutar la acción RelojDeArena en Visual Basic, use el método Hourglass del objeto DoCmd.


Acción Maximizar

Puede usar la acción Maximizar para aumentar la ventana activa de manera que ocupe la ventana de Microsoft Access. Esta acción le permitirá ver el máximo posible del objeto de la ventana activa.

Valores

La acción Maximizar no utiliza argumentos.

Comentarios

Esta acción tiene el mismo efecto que hacer clic en el botón Maximizar de la esquina superior derecha de la ventana o que hacer clic en Maximizar en el menú Control.

Puede usar la acción Restaurar para restaurar una ventana maximizada a su tamaño anterior.

Sugerencias

•	Puede que necesite usar la acción SeleccionarObjeto si la ventana que desea maximizar no es la ventana activa.

•	Cuando se maximiza una ventana en Microsoft Access, todas las demás ventanas se maximizan también cuando las abra o pase a ellas. Sin embargo, los formularios emergentes no se maximizan. Si desea que un formulario mantenga su tamaño cuando se maximizan las demás ventanas, establezca su propiedad Emergente (PopUp) a Sí. Para obtener información acerca de cómo Microsoft Access maximiza las ventanas, busque en Microsoft Knowledge Base el artículo Q147152, "Maximizar un formulario maximiza todas los formularios (7.0)." Para vincular a la página de búsqueda de Microsoft Access Knowledge Base, haga clic en  [image]. Para obtener información acerca de cómo tener acceso a Knowledge Base u otros recursos técnicos en pantalla, consulte Conexión a los recursos técnicos de Microsoft.

Para ejecutar la acción Maximizar en Visual Basic, use el método Maximize del objeto DoCmd.


Acción Minimizar

Puede usar la acción Minimizar para reducir la ventana activa a una pequeña barra de títulos en la parte inferior de la ventana de Microsoft Access.

Valores

La acción Minimizar no utiliza argumentos.

Comentarios

Puede usar esta acción para eliminar una ventana de la pantalla manteniendo abierto el objeto. También puede usar esta acción para abrir un objeto sin mostrar su ventana. Para mostrar el objeto, use la acción SeleccionarObjeto junto con la acción Maximizar o Restaurar. La acción Restaurar restaura una ventana minimizada a su tamaño anterior.

La acción Minimizar tiene el mismo efecto que hacer clic en el botón Minimizar en la esquina superior derecha de la ventana o hacer clic en Minimizar en el menú Control.

Sugerencias

•	Puede que necesite usar primero la acción SeleccionarObjeto si la ventana que desea minimizar no es la ventana activa.

•	Para minimizar la ventana Base de datos, use la acción SeleccionarObjeto con el argumento En ventana Base de datos establecido a Sí y luego use la acción Minimizar.

•	Puede usar el comando Ocultar en el menú Ventana para ocultar la ventana activa. En lugar de reducirla a un icono, la ventana se vuelve invisible. El comando Mostrar del menú Ventana hará que vuelva a aparecer la ventana. Puede usar la acción EjecutarComando para ejecutar algunos de estos comandos desde una macro.

•	Puede usar la acción EstablecerValor para establecer la propiedad Visible de un formulario para ocultar o mostrar la ventana del formulario.

Para ejecutar la acción Minimizar en Visual Basic, use el método Minimize del objeto DoCmd.


Acción DesplazarTamaño

Puede usar la acción DesplazarTamaño para desplazar o cambiar el tamaño de la ventana activa.

Valores

La acción DesplazarTamaño utiliza los siguientes argumentos.

Argumento de acción	Descripción
Derecho	La nueva posición horizontal de la esquina superior izquierda de la ventana, medida desde el borde izquierdo de la ventana que la contiene. Introduzca la posición en el cuadro Derecho en la sección Argumentos de acción de la ventana Macro.
Abajo	La nueva posición vertical de la esquina superior izquierda de la ventana, medida desde el borde superior de la ventana que la contiene.
Ancho	El nuevo ancho de la ventana.
Alto	El nuevo alto de la ventana.
Si deja un argumento en blanco, Microsoft Access usa el valor actual de la ventana.

Debe introducir un valor para al menos un argumento.

Nota   Cada medida es en pulgadas o centímetros, dependiendo de las unidades establecidas en el Sistema de medida de la ficha Número del cuadro de diálogo Propiedades de Configuración regional en el Panel de control de Windows.

Comentarios

Esta acción es similar a hacer clic en Mover o Tamaño en el menú Control. de la ventana. Con los comandos de menú, se usan las teclas de desplazamiento para mover o cambiar el tamaño de la ventana. Con la acción DesplazarTamaño, introduzca directamente las medidas de posición y tamaño. También puede usar el mouse para mover o cambiar el tamaño de las ventanas.

Puede usar esta acción en cualquier ventana, en cualquier vista.

Sugerencias

•	Para mover una ventana sin cambiarle el tamaño, introduzca valores para los argumentos Derecho y Abajo pero deje los argumentos Ancho y Alto en blanco.

•	Para cambiar el tamaño a una ventana sin moverla, introduzca valores para los argumentos Ancho y Alto pero deje los argumentos Derecho y Abajo en blanco.

Para ejecutar la acción DesplazarTamaño en Visual Basic, use el método MoveSize del comando DoCmd.


Acción CuadroMsj

Puede usar la acción CuadroMsj para mostrar un cuadro de mensaje que contenga una advertencia o un mensaje de información. Por ejemplo, puede usar la acción CuadroMsj con macros de validación. Cuando un control o registro no cumple una condición de validación en la macro, un cuadro de mensaje puede mostrar un mensaje de error y proporcionar instrucciones acerca de la clase de datos que debería introducir.

Valores

La acción CuadroMsj utiliza los siguientes argumentos.

Argumento de acción	Descripción
Mensaje	El texto en el cuadro de mensaje. Introduzca el texto del mensaje en el cuadro Mensaje en la sección Argumentos de acción de la ventana Macro. Puede escribir hasta 255 caracteres o introducir una expresión (precedida por un signo igual).
Bip	Especifica si el altavoz de su PC emite un sonido cuando se presente el mensaje. Haga clic en Sí (emitirá el sonido) o No (no emitirá el sonido). El valor predeterminado es Sí.
Tipo	El tipo del cuadro de mensaje. Cada tipo tiene un icono distinto. Haga clic en Ninguno, Crítico, Aviso: ?, Aviso: !, o Información. El valor predeterminado es Ninguno.
Título	El texto presentado en la barra de título del cuadro de mensaje. Por ejemplo, puede hacer que la barra de título presente "Validar Identificación del cliente". Si deja este argumento en blanco, se muestra "Microsoft Access".
Comentarios

Puede utilizar la acción CuadroMsj para crear un mensaje de error con formato similar a los mensajes de error incorporados de Microsoft Access. La acción CuadroMsj le permite proporcionar un mensaje en tres secciones para el argumento Mensaje. Separe las secciones con el carácter "@".

El siguiente ejemplo muestra un cuadro de mensaje con formato con un mensaje en secciones. La primera sección del texto del mensaje se muestra como encabezado en negrita. La segunda sección se muestra como texto normal bajo ese encabezado. La tercera sección se muestra como texto normal bajo la segunda sección, con una línea blanca entre ellos.

Introduzca lo siguiente en el argumento Mensaje:

¡Botón equivocado!@Este botón no funciona.@Pruebe otro botón.

Nota   Si está visible el Ayudante de Office, el mensaje se muestra en el globo del Ayduante en lugar de un cuadro de mensaje separado.

Microsoft Windows 95 y Windows NT presentan iconos ligeramente diferentes para los valores establecidos del argumento Tipo.

En Visual Basic no puede ejecutar la acción CuadroMsj. En su lugar, utilice la función MsgBox.


Acción AbrirFormulario

Puede usar la acción AbrirFormulario para abrir un formulario en la vista Formulario, vista Diseño del formulario, Vista preliminar o vista Hoja de datos. Puede seleccionar la entrada de datos y los modos de la ventana para el formulario y restringir los registros que muestra el formulario.

Valores

La acción AbrirFormulario utiliza los siguientes argumentos.

Argumento de acción	Descripción
Nombre del formulario	Nombre del formulario que se va a abrir. El cuadro Nombre de formulario en la sección Argumentos de acción de la ventana Macro muestra todos los formularios en la base de datos actual. Este argumento es obligatorio. Si ejecuta una macro que contiene una acción AbrirFormulario en una base de datos de biblioteca, Microsoft Access busca el formulario con este nombre primero en la base de datos de biblioteca, y luego en la base de datos actual.
Vista	La vista en la que se abrirá el formulario. Haga clic en Formulario, Diseño, Vista preliminar u Hoja de datos en el cuadro Vista. El valor predeterminado es Formulario.
	Nota El valor del argumento Vista prevalece sobre el valor de las propiedades PresentaciónPredeterminada (DefaultView) y PresentacionesPermitidas (ViewsAllowed) del formulario. Por ejemplo, si la propiedad PresentacionesPermitidas (ViewsAllowed) de un formulario se establece a Hoja de datos, puede usar la acción AbrirFormulario para abrir el formulario en la vista Formulario.
Nombre del filtro	Un filtro que limita u ordena los registros del formulario. Puede introducir el nombre de una consulta existente o un filtro guardado como consulta. Sin embargo, la consulta debe incluir todos los campos del formulario que esté abriendo o tener su propiedad Mostrar todos los campos (OutputAllFields) establecida a Sí.
Condición WHERE	Una cláusula WHERE de SQL válida (sin la palabra WHERE) o una expresión que utiliza Microsoft Access para seleccionar registros de la tabla o consulta base del formulario. Si selecciona un filtro con el argumento Nombre del filtro, Microsoft Access aplica esta cláusula WHERE a los resultados del filtro. Para abrir un formulario y limitar sus registros a los especificados por el valor de un control en otro formulario, utilice la siguiente expresión: [nombrecampo] = Forms![nombreformulario]![nombrecontrol en otro formulario] El argumento nombrecampo es el nombre de un campo en la tabla o consulta base del formulario que desee abrir. El argumento nombrecontrol en otro formulario es el nombre del control en el otro formulario que contiene el valor que desea que coincida con los registros del primer formulario.
	Nota La longitud máxima del argumento Condición WHERE es de 256 caracteres. Si necesita introducir una cláusula WHERE de SQL de mayor complejidad que ésta utilice, en su lugar, el método OpenForm del objeto DoCmd de Visual Basic. En Visual Basic puede introducir instrucciones de cláusulas WHERE de SQL de hasta 32.768 caracteres.
Modo de datos	El modo de introducir datos del formulario. Se aplica sólo a los formularios abiertos en la vista Formulario o vista Hoja de datos. Haga clic en Agregar (el usuario puede agregar nuevos registros, aunque no puede editar los registros existentes), Modificar (el usuario puede modificar los registros existentes y agregar otros nuevos) o Sólo lectura (el usuario sólo puede ver los registros). El valor predeterminado es Modificar.
	Notas • El valor del argumento Modo de datos prevalece sobre los valores establecidos de las propiedades PermitirEdiciones (AllowEdits), PermitirEliminación (AllowDeletions), PermitirAgregar (AllowAdditions), y EntradaDeDatos (DataEntry) del formulario. Por ejemplo, si la propiedad PermitirEdiciones (AllowEdits) de un formulario se establece a No, puede usar la acción AbrirFormulario para abrir el formulario en el modo Modificar. • Si deja este argumento en blanco, Microsoft Access abre el formulario en el modo de entrada de datos establecido por las propiedades PermitirEdiciones (AllwEdits), PermitirEliminación (AllowDeletions), PermitirAgregar (AllowAditions) y EntradaDeDatos (DataEmtry) del formulario.
Modo de la ventana	El modo de la ventana en el que abre el formulario. Haga clic en Normal de tal forma que el formulario está en el modo establecido por sus propiedades, Oculto (el formulario está oculto), Icono (el formulario se abre minimizado como una pequeña barra de títulos en la parte inferior de la pantalla) o Diálogo (las propiedades Modal y Emergente (PopUp) del formulario están establecidas a Sí). El valor predeterminado es Normal.
Comentarios

Esta acción es similar a elegir el botón Abrir o el botón Diseño en la ventana Base de datos después de seleccionar un formulario en la ficha Formularios.

Un formulario puede ser modal (debe ser cerrado u ocultarse antes de que el usuario pueda llevar a cabo cualquier otra acción) o no modal (el usuario puede moverse a otras ventanas mientras el formulario está abierto). También puede ser un formulario emergente (un formulario utilizado para recopilar o presentar información que permanece encima de todas las demás ventanas de Microsoft Access). Las propiedades Modal y Emergente (PopUp) se establecen al diseñar el formulario. Si utiliza Normal para el argumento Modo de la ventana, el formulario se abre en el modo especificado por los valores establecidos en esas propiedades. Si usa Diálogo para el argumento Modo de la ventana, estas propiedades se establecen ambas a Sí. Un formulario abierto como oculto o como un icono, vuelve al modo especificado por los valores establecidos en sus propiedades cuando lo muestra o lo restablece.

Cuando abre un formulario con el argumento Modo de la ventana establecido a Diálogo, Microsoft Access suspende la macro hasta que el formulario esté cerrado u oculto. Puede ocultar un formulario estableciendo su propiedad Visible a No utilizando la acción EstablecerValor.

Sugerencia Puede seleccionar un formulario de la ventana Base de datos y arrastrarlo a una fila de acción de una macro. Esto crea de forma automática una acción AbrirFormulario que abre el formulario en la vista Formulario.

Cambiar a la vista Diseño mientras está abierto el formulario borra la mayoría de los valores establecidos del argumento del formulario, como los valores de las propiedades Modo de datos y Modo de la ventana. No tendrán efecto aunque el usuario vuelva a la vista Formulario o a la vista Hoja de datos.

El filtro y la condición WHERE que aplique se convierten en el valor de la propiedad Filtro (Filter) del formulario.


Acción AbrirConsulta

Puede usar la acción AbrirConsulta para abrir una consulta de selección o de tabla de referencias cruzadas en la vista Hoja de datos, en la vista Diseño o en Vista preliminar. Esta acción ejecuta una consulta de acciones. Puede seleccionar un modo de entrada de datos para la consulta.

Valores

La acción AbrirConsulta utiliza los siguientes argumentos.

Argumento de acción	Descripción
Nombre de la consulta	El nombre de la consulta que se va a abrir. El cuadro Nombre de la consulta en la sección Argumentos de acción de la ventana Macro muestra todas las consultas en la base de datos activa. Este argumento es obligatorio. Si ejecuta una macro que contiene una acción AbrirConsulta en una base de datos de biblioteca, Microsoft Access busca la consulta con este nombre primero en la base de datos de biblioteca, y después en la base de datos activa.
Vista	La vista en la que se abrirá la consulta. Haga clic en Hoja de datos, Diseño o Vista preliminar en el cuadro Vista. El valor predeterminado es Hoja de datos.
Modo de datos	El modo de entrada de datos de la consulta. Esto sólo se aplica a las consultas abiertas en la vista Hoja de datos. Haga clic en Agregar (el usuario puede agregar nuevos registros pero no puede modificar los existentes), Modificar (el usuario puede modificar los registros existentes y agregar otros nuevos) o Sólo lectura (el usuario sólo puede ver los registros). El valor predeterminado es Modificar.
Comentarios

Si usa Hoja de datos para el argumento Vista, Microsoft Access muestra el conjunto de resultados si la consulta es una consulta de selección, de referencias cruzadas, de unión o de paso a través cuya propiedad Devuelve registros (ReturnsRecords) está establecida a Sí; y ejecuta la consulta si es una consulta de acciones, de definición de datos o de paso a través cuya propiedad Devuleve registros (ReturnsRecords) está establecida a No.

La acción AbrirConsulta es similar a hacer clic en los botones Abrir o Diseño en la ventana Base de datos después de seleccionar una consulta en la ficha Consultas. Con esta acción puede seleccionar opciones adicionales.

Sugerencia   Puede seleccionar una consulta en la ventana Base de datos y arrastrarla a una fila de acción de una macro. Esto crea de forma automática una acción AbrirConsulta que abre la consulta en la vista Hoja de datos.

Cambiar a la vista Diseño mientras que la consulta esté abierta borra el valor en el argumento Modo de datos de la consulta. Este valor establecido no queda activo aunque el usuario vuelva a la vista Hoja de datos.

Sugerencia   Si no desea presentar los mensajes del sistema que normalmente aparecen cuando se ejecuta una consulta de acciones (indicando que es una consulta de acciones y mostrando cuántos registros se verán afectados), puede utilizar la acción EstablecerAdvertencias para suprimir la presentación de estos mensajes.

Para ejecutar la acción AbrirConsulta en Visual Basic, use el método OpenQuery del objeto DoCmd.


Acción AbrirInforme

Puede usar la acción AbrirInforme para abrir un informe en la vista Diseño o Vista preliminar o para imprimir el informe inmediatamente. También puede limitar los registros que se van a imprimir en el informe.

Valores

La acción AbrirInforme utiliza los siguientes argumentos.

Argumento de acción	Descripción
Nombre del informe	El nombre del informe a ser abierto. El cuadro nombre del informe en la sección Argumentos de acción de la ventana Macro muestra todos los informes en la base de datos activa. Este argumento es obligatorio. Si ejecuta una macro que contenga la acción AbrirInforme en una base de datos de biblioteca, Microsoft Access busca el informe con este nombre primero en la base de datos de biblioteca, y después en la base de datos activa.
Vista	La vista en la que se va a abrir el informe. Haga clic en Imprimir (imprimir el informe inmediatamente), Diseño o Vista preliminar en el cuadro Vista. El valor predeterminado es Imprimir.
Nombre de filtro	Un filtro que limita los registros del informe. Puede introducir el nombre de una consulta existente o un filtro guardado como consulta. Sin embargo, la consulta debe incluir todos los campos del informe que esté abriendo o tener su propiedad Mostrar todos los campos (OutputAllFields) establecida a Sí.
Condición WHERE	Una cláusula WHERE de SQL válida (sin la palabra WHERE) o una expresión que utiliza Microsoft Access para seleccionar registros desde la tabla o consulta base del informe. Si selecciona un filtro con el argumento Nombre del filtro, Microsoft Access aplica esta cláusula WHERE a los resultados del filtro. Para abrir un informe y limitar sus registros a los especificados por el valor de un control de un formulario, utilice la siguiente expresión: [nombrecampo] = Forms![nombreformulario]![nombrecontrol del formulario] El argumento nombrecampo es el nombre de un campo en la tabla o consulta base del informe que desea abrir. El argumento nombrecontrol del formulario es el nombre del control del formulario que contiene el valor con el que desea que coincidan los registros del informe.
	Nota La longitud máxima del argumento Condición WHERE es 256 caracteres. Si necesita introducir una cláusula WHERE de SQL de mayor complejidad que ésta utilice, en su lugar, el método OpenReport del objeto DoCmd de Visual Basic. En Visual Basic puede introducir instrucciones de cláusulas WHERE de SQL de hasta 32.768 caracteres.
Comentarios

El valor predeterminado de Imprimir del argumento Vista imprime el informe de forma inmediata utilizando el valor actual predeterminado de la impresora sin presentar el cuadro de diálogo Imprimir. También puede utilizar la acción AbrirInforme para abrir y configurar un informe y luego utilizar la acción Imprimir para imprimirlo. Por ejemplo, podría desear modificar el informe o utilizar la acción Imprimir para cambiar los valores de la impresora antes de imprimir.

El filtro y la condición WHERE que aplique se convierten en los valores de la propiedad Filtro (Filter) del informe.

La acción AbrirInforme es similar a hacer clic en los botones Diseño o Vista preliminar, o a seleccionar el comando Imprimir en el menú Archivo en la ventana Base de datos después de seleccionar un informe.

Sugerencias

•	Para imprimir informes similares de conjuntos diferentes de datos, utilice un filtro o una cláusula WHERE para limitar los registros del informe a imprimir. Después edite la macro para aplicar un filtro diferente o cambiar el argumento Condición WHERE.

•	Puede seleccionar un informe en la ventana Base de datos y arrastrarlo a la fila de acción de la macro. Esto crea de forma automática una acción AbrirInforme que abre el informe en Vista preliminar.


Acción AbrirTabla

Puede usar la acción AbrirTabla para abrir una tabla en la vista Hoja de datos, en la vista Diseño o en Vista preliminar. También puede seleccionar un modo de entrada de datos para la tabla.

Valores

La acción AbrirTabla utiliza los siguientes argumentos.

Argumento de acción	Descripción
Nombre de la tabla	Nombre de la tabla que se va a abrir. El cuadro Nombre de la tabla en la sección Argumentos de acción de la ventana Macro muestra todas las tablas en la base de datos activa. Este argumento es obligatorio.
	Si ejecuta una macro que contenga una acción AbrirTabla en una base de datos de biblioteca, Microsoft Access busca la tabla con este nombre primero en la base de datos de biblioteca, y después en la base de datos activa.
Vista	La vista en la que se abrirá la tabla. Haga clic en Hoja de datos, Diseño o Vista preliminar en el cuadro Vista. El valor predeterminado es Hoja de datos.
Modo de datos	El modo de introducir datos de la tabla. Se aplica sólo a las tablas abiertas en la vista Hoja de datos. Haga clic en Agregar (el usuario puede agregar nuevos registros pero no puede modificar los existentes), Modificar (el usuario puede modificar los registros existentes y agregar otros nuevos) o Sólo lectura (el usuario sólo puede ver los registros). El valor predeterminado es Modificar.
Comentarios

Esta acción es similar a hacer clic en los botones Abrir o Diseño en la ventana Base de datos después de seleccionar una tabla en la ficha Tablas.

Sugerencia   Puede seleccionar una tabla en la ventana Base de datos y arrastrarla a una fila de acción de una macro. Esto crea de forma automática una acción AbrirTabla que abre la tabla en la vista Hoja de datos.

El cambio a la vista Diseño con la tabla abierta borra el valor en el argumento Modo de datos de la tabla. Este valor no estará en efecto aunque el usuario vuelva a la vista Hoja de datos.

Para ejecutar la acción AbrirTabla en Visual Basic, utilice el método OpenTable del objeto DoCmd.


Acción Imprimir

Puede usar la acción Imprimir para imprimir el objeto activo de la base de datos. Puede imprimir hojas de datos, informes, formularios y módulos.

Valores

La acción Imprimir utiliza los siguientes argumentos.

Argumento de acción	Descripción
Intervalo de impresión	El intervalo a imprimir. Haga clic en Todo (el usuario puede imprimir todo el objeto), Selección (el usuario puede imprimir la parte del objeto que se haya seleccionado) o Páginas (el usuario puede especificar un intervalo de páginas en los argumentos Desde la página y Hasta la página) en el cuadro Intervalo de impresión en la sección Argumentos de acción de la ventana Macro. El valor predeterminado es Todo.
Desde página	Primera página a imprimir. La impresión comienza al principio de esta página. Este argumento es obligatorio si hace clic en Páginas en el cuadro Intervalo de impresión.
Hasta página	Última página a imprimir. La impresión se detiene en la parte de abajo de esta página. Este argumento es obligatorio si hace clic en Páginas en el cuadro Intervalo de impresión.
Calidad de impresión	La calidad de la impresión. Haga clic en Alta, Media, Baja o Borrador. Cuanta menor sea la calidad, más rápido se imprimirá el objeto. El valor predeterminado es Alta.
Copias	Número de copias a imprimir. El valor predeterminado es 1.
Intercalar copias	Haga clic en Sí (intercalar la copias impresas) o No (no intercalar copias). El objeto se puede imprimir más rápido si este argumento está establecido a No. El valor predeterminado es Sí.
Comentarios

Esta acción es similar a seleccionar un objeto y luego hacer clic en el comando Imprimir del menú Archivo. Con la acción, no obstante, no aparece el cuadro de diálogo Imprimir.

Sugerencia   Si tiene valores de impresión que utiliza frecuentemente, cree una macro que contenga una acción Imprimir con esos valores en sus argumentos.

Los argumentos de esta acción se corresponden a las opciones del cuadro de diálogo Imprimir. No obstante, al contrario que la acción BuscarRegistro y el cuadro de diálogo Buscar en campo, los valores establecidos del argumento no se comparten con las opciones del cuadro de diálogo Imprimir.

Para ejecutar la acción Imprimir en Visual Basic, utilice el método PrintOut del objeto DoCmd.


Acción EjecutarSQL

La acción EjecutarSQL se utiliza para ejecutar una consulta de acción de Microsoft Access usando la correspondiente instrucción SQL. También puede ejecutar una consulta de definición de datos.

Valores

La acción EjecutarSQL utiliza los siguientes argumentos.

Argumento de la acción	Descripción
Instrucción SQL	La instrucción SQL para la consulta de acción o consulta de definición de datos que desea ejecutar. La longitud máxima de esta instrucción es de 256 caracteres. Este es un argumento obligatorio.
Usar transacción	Seleccione Sí para incluir esta consulta en una transacción. Seleccione No si no desea usar una transacción. El valor predeterminado es Sí. Las versiones previas de Microsoft Access siempre han incluido la consulta en una transacción cuando se ejecutaba esta acción. Si selecciona No en este argumento, la consulta puede ejecutarse más rápido.
Observaciones

Las consultas de acción se utilizan para anexar, eliminar y actualizar registros y para guardar el conjunto de resultados de una consulta como una nueva tabla. Las consultas de definición de datos se utilizan para crear, alterar y eliminar tablas, y para crear y eliminar índices. Con la acción EjecutarSQL, puede realizar estas operaciones directamente desde una macro sin tener que usar consultas almacenadas.

Si necesita escribir una instrucción SQL que sea mayor de 256 caracteres, use en su lugar el método RunSQL del objeto DoCmd en Visual Basic. En Visual Basic puede escribir instrucciones SQL de hasta 32.768 caracteres.

Las consultas de Microsoft Access son en realidad instrucciones SQL que se crean cuando diseña una consulta usando la cuadrícula de diseño en la ventana Consulta. La siguiente tabla muestra las consultas de acción y las consultas de definición de datos de Microsoft Access y sus correspondientes instrucciones SQL.

Tipo de consulta	Instrucción SQL
Acción
Anexar	INSERT INTO
Eliminar	DELETE
Crear tabla	SELECT...INTO
Actualizar	UPDATE
Definición de datos (específico de SQL)
Crear una tabla	CREATE TABLE
Modificar una tabla	ALTER TABLE
Eliminar una tabla	DROP TABLE
Crear un índice	CREATE INDEX
Eliminar un índice	DROP INDEX
También puede usar una cláusula IN con estas instrucciones para modificar los datos de otra base de datos.

Nota   Para ejecutar una consulta de selección o una consulta de tabla de referencias cruzadas desde una macro, use el argumento Vista de la acción AbrirConsulta para abrir una consulta de selección o consulta de tabla de referencias cruzadas existente en la vista Hoja de datos. También puede ejecutar las consultas de acción y las consultas específicas de SQL existentes de la misma manera.

Sugerencia   Para ver el equivalente SQL de una consulta de Microsoft Access, haga clic en Vista SQL en el menú Ver en la ventana Consulta. Puede usar las instrucciones SQL que se enumeran como modelos para crear consultas para ejecutar con la acción EjecutarSQL. La duplicación de una instrucción SQL en el argumento Instrucción SQL para la acción EjecutarSQL tiene el mismo efecto que ejecutar esta consulta de Microsoft Access en la ventana Consulta.


Acción TransferirBaseDatos

La acción TransferirBaseDatos se utiliza para importar o exportar datos entre la base de datos activa de Microsoft Access y otra base de datos. También puede vincular una tabla a la base de datos activa de Microsoft Access desde otra base de datos. Con un tabla vinculada, se tiene acceso a los datos de la tabla mientras la propia tabla permanece en la otra base de datos.

Valores

La acción TransferirBaseDatos utiliza los siguientes argumentos.

Argumento de acción	Descripción
Tipo de transferencia	El tipo de transferencia que desea realizar. Seleccione Importar, Exportar o Vincular en el cuadro Tipo de transferencia de la sección Argumentos de acción de la ventana Macro. El valor predeterminado es Importar.
Tipo de base de datos	El tipo de base de datos a importar, exportar, o vincular. Puede seleccionar Microsoft Access o uno de los demás tipos de bases de datos del cuadro Tipo de base de datos. El valor predeterminado es Microsoft Access.
	Los tipos de bases de datos mostrados en el argumento Tipo de base de datos depende de la forma en la que haya instalado Microsoft Access. Todos los tipos de bases de datos no se instalan de forma predeterminada. Si el tipo de base de datos que desea usar para importar, exportar o vincular no está disponible, ejecute el programa de instalación de Microsoft Access, haga clic en la opción Agregar o quitar, seleccione la opción Acceso a datos en el cuadro de diálogo y haga clic en el botón Cambiar opción, y luego seleccione el tipo de base de datos que desea instalar desde el cuadro Controladores de bases de datos y haga clic de nuevo en el botón Cambiar opción. Algunos controladores de base de datos se incluyen sólo en el Value Pack de Office 97 (además, el Value Pack incluye todos los controladores de base de datos disponibles en la instalación de Microsoft Access). Para obtener más información sobre instalación de controladores de base de datos desde el Value Pack, vea Acerca del Value Pack de Office 97.
Nombre de la base de datos	El nombre de la base de datos para importar, exportar, o vincular. Incluya la ruta de acceso completa. Este argumento es obligatorio.
	Para los tipos de bases de datos que usan archivos separados para cada tabla, tal como FoxPro, Paradox, y dBASE, introduzca el directorio que contenga el archivo. Escriba el nombre de archivo en el argumento Origen (para importar o vincular) o en el argumento Destino (para exportar).
	Para las bases de datos ODBC, escriba la cadena de conexión ODBC (Open Database Connectivity) completa. Para ver un ejemplo de una cadena de conexión, vincule una tabla externa a Microsoft Access apuntando a Obtener datos externos en el menú Archivo y eligiendo Vincular tablas. Abra la tabla en la vista Diseño y examine las propiedades de la tabla. El texto del valor de la propiedad Descripción es la cadena de conexión para esta tabla.
	Para obtener más información acerca de las cadenas de conexión ODBC, consulte el archivo de Ayuda o el resto de la documentación para el controlador ODBC de este tipo de base de datos ODBC.
Tipo de objeto	El tipo de objeto a importar o exportar. Si selecciona Microsoft Access para el argumento Tipo de base de datos, puede seleccionar Tabla, Consulta, Formulario, Informe, Macro o Módulo en el cuadro Tipo de objeto. Si selecciona cualquier otro tipo de base de datos o si selecciona Vincular en el cuadro Tipo de transferencia, se ignora este argumento. El valor predeterminado es Tabla.
	Si está exportando una consulta de selección a una base de datos de Microsoft Access, seleccione Tabla en este argumento para exportar el conjunto de resultados de la consulta, y Consulta para exportar la propia consulta. Si está exportando una consulta de selección a otro tipo de base de datos, este argumento se ignora, con lo que se exporta el conjunto de resultados de la consulta.
Origen	El nombre de la tabla, consulta de selección, u objeto Microsoft Access que desea importar, exportar o vincular. Para algunos tipos de bases de datos, tal como FoxPro, Paradox o dBASE, esto es un nombre de archivo. Incluya la extensión del nombre de archivo (tal como .dbf) en el nombre de archivo. Este argumento es obligatorio.
Destino	El nombre de la tabla importada, exportada o vinculada, de la consulta de selección o del objeto de Microsoft Access de la base de datos de destino. Para algunos tipos de bases de datos, tal como FoxPro, Paradox o dBASE, esto es un nombre de archivo. Incluya la extensión del nombre de archivo (tal como .dbf) en el nombre del archivo. Este argumento es obligatorio.
	Si selecciona Importar en el argumento Tipo de transferencia y Tabla en el argumento Tipo de objeto, Microsoft Access creará una nueva tabla que contenga los datos de la tabla importada.
	Si importa una tabla o cualquier otro objeto, Microsoft Access agregará un número al nombre si está en conflicto con un nombre existente. Por ejemplo, si importa Empleados y Empleados ya existe, Microsoft Access cambia el nombre de la tabla importada o cualquier otro objeto a Empleados1.
	Si exporta a una base de datos de Microsoft Access o a cualquier base de datos, Microsoft Access reemplazará automáticamente cualquier tabla existente o cualquier otro objeto que tenga el mismo nombre.
Sólo la estructura	Especifica si debe importar o exportar sólo la estructura de una tabla de base de datos sin ninguno de sus datos. Seleccione Sí o No. El valor predeterminado es No.
Observaciones

Puede importar o exportar tablas entre bases de datos de Microsoft Access y de otros tipos. También puede exportar consultas de selección de Microsoft Access a otros tipos de bases de datos. Microsoft Access exporta el conjunto de resultados de la consulta en el formulario de una tabla. Puede importar y exportar cualquier objeto de base de datos Microsoft Access si ambas bases de datos son de Microsoft Access.

En Microsoft Access 97, si importa una tabla de otra base de datos de Microsoft Access que es una tabla vinculada en esa base de datos, seguirá vinculada después de que la importe. Es decir, el vínculo es importado, y no la tabla en sí.

Si la base de datos a la que tiene acceso requiere una contraseña, aparecerá un cuadro de diálogo cuando ejecute la macro. Escriba la contraseña en este cuadro de diálogo.

Nota   Sólo puede importar y exportar datos entre bases de datos Microsoft Access y FoxPro versión 3.0. No se puede vincular a tablas de bases de datos FoxPro.

La acción TransferirBaseDatos es similar a apuntar a Obtener datos externos o Guardar como o exportar en el menú Archivo de la ventana Base de datos y elegir Importar o Vincular tablas. Puede usar estos comandos para seleccionar un origen de datos, tal como Microsoft Access o un tipo de base de datos, hoja de cálculo o archivo de texto. Si selecciona una base de datos, aparecerán uno o más cuadros de diálogo en los que seleccione el tipo de objeto a importar o exportar (para las bases de datos de Microsoft Access), el nombre del objeto y otras opciones, dependiendo de la base de datos que esté importando, exportando o vinculando. Los argumentos para la acción TransferirBaseDatos reflejan las opciones de estos cuadros de diálogo.

Si desea suministrar información de los índices para una tabla vinculada de FoxPro o dBASE, primero vincule la tabla FoxPro o dBASE apuntando a Obtener datos externos en el menú Archivo y eligiendo Vincular tablas, y luego especifique los índices en los cuadros de diálogo para este comando. Microsoft Access almacena la información de los índices en un archivo de información especial (.inf), ubicado en la carpeta Office (la ruta de acceso es C:\Archivos de programa\Microsoft Office\Office). Luego puede eliminar el vínculo a la tabla vinculada. La siguiente vez que utilice la acción TransferirBaseDatos para vincular esta tabla FoxPro o dBASE, Microsoft Access usará la información de los índices que especificó.

Nota   Si consulta o filtra una tabla vinculada, la consulta o filtro distingue las mayúsculas de las minúsculas.

Para ejecutar en Visual Basic la acción TransferirBaseDatos, use el método TransferDatabase del objeto DoCmd.


Acción TransferirHojaCálculo

La acción TransferirHojaCálculo se utiliza para importar o exportar datos entre la base de datos activa de Microsoft Access y un archivo de hoja de cálculo. También puede vincular los datos de una hoja de cálculo Microsoft Excel a la base de datos activa de Microsoft Access. Con una hoja de cálculo vinculada, puede ver y modificar los datos de hojas de cálculo con Microsoft Access mientras permite un acceso completo a los datos del programa de la hoja de cálculo Microsoft Excel. También puede vincular los datos de un archivo de hoja de cálculo Lotus 1-2-3, pero estos datos son de sólo lectura en Microsoft Access.

Valores

La acción TransferirHojaCálculo utiliza los siguientes argumentos.

Argumento de  acción	Descripción
Tipo de transferencia	El tipo de transferencia que desee realizar. Seleccione Importar, Exportar o Vincular en el cuadro Tipo de transferencia de la sección Argumentos de acción de la ventana Macro. El valor predeterminado es Importar.
Tipo de hoja de cálculo	El tipo de hoja de cálculo para importar, exportar, o vincular. Puede seleccionar una entre varios tipos de hojas de cálculo del cuadro. El valor predeterminado es Microsoft Excel 3.
	Notas • Si desea importar, exportar o vincular datos de hojas de cálculo de archivos o a archivos de Lotus 1-2-3, debe instalar el controlador de Lotus 1-2-3 del Value Pack de Office 97. Si desea más información sobre la instalación de este controlador desde el Value Pack, vea Acerca del Value Pack de Office 97. • Puede importar de o vincular (de sólo lectura) a archivos .WK4 de Lotus, pero no puede exportar datos de Microsoft Access a este formato de hoja de cálculo. Con esta acción, Microsoft Access tampoco es compatible ya con la importación, exportación o vinculación de datos de hojas de cálculo Lotus .WKS o Microsoft Excel versión 2.0. Si desea importar o vincular datos de formato de hojas de cálculo de Microsoft Excel versión 2.0 o de Lotus .WKS, convierta los datos de las hojas de cálculo a una versión posterior de Microsoft Excel o de Lotus 1-2-3 antes de importar o vincular los datos a Microsoft Access.
Nombre de la tabla	El nombre de la tabla de Microsoft Access para importar, exportar o vincular datos de hojas de cálculo. También puede escribir el nombre de la consulta de selección de Microsoft Access de la que desea exportar datos. Este argumento es obligatorio.
	Si selecciona Importar en el argumento Tipo de transferencia, Microsoft Access anexa los datos de las hojas de cálculo a esta tabla, si ésta existe. En caso contrario, Microsoft Access crea una nueva tabla que contenga los datos de las hojas de cálculo.
	En Microsoft Access 97, no se puede usar una instrucción SQL para especificar los datos a exportar cuando esté usando la acción TransferirHojaCálculo. En lugar de usar una instrucción SQL, primero debe crear una consulta y luego especificar el nombre de la consulta en el argumento Nombre de la tabla.
Nombre de archivo	El nombre del archivo de la hoja de cálculo para importar, exportar o vincular. Incluya la ruta de acceso completa. Este argumento es obligatorio.
	Microsoft Access crea una nueva hoja de cálculo cuando exporta los datos desde Microsoft Access. Si el nombre del archivo es el mismo que el nombre de una hoja de cálculo existente, Microsoft Access reemplaza la hoja de cálculo existente, a menos que esté exportando a un libro de trabajo de Microsoft Excel versión 5.0, 7.0 o Excel 97. En ese caso, Microsoft Access copia los datos exportados a la siguiente hoja de trabajo nueva que esté disponible en el libro de trabajo.
	Si está importando o vinculando una hoja de cálculo de Microsoft Excel versión 5.0, 7.0 o Excel 97, puede especificar una hoja de trabajo determinada usando el argumento Intervalo.
Contiene nombres de campo	Especifica si la primera fila de la hoja de cálculo contiene los nombres de los campos. Si selecciona Sí, Microsoft Access usa los nombres de esta fila como nombres de campos en la tabla de Microsoft Access cuando importe o vincule los datos de las hojas de cálculo. Si selecciona No, Microsoft Access trata la primera fila como una fila normal de datos. El valor predeterminado es No.
	Cuando se exporta una tabla o consulta de selección de Microsoft Access a una hoja de cálculo, los nombres de los campos se insertan en la primera fila de la hoja de cálculo, con independencia de lo que hubiera seleccionado en este argumento.
Intervalo	El intervalo de celdas que importar o vincular. Deje este argumento en blanco para importar o vincular la hoja de cálculo completa. Puede escribir el nombre de un intervalo de la hoja de cálculo o especificar un intervalo de celdas a importar o vincular, tal como A1:E25 (observe que la sintaxis A1..E25 ya no funciona en Microsoft Access 97). Si está importando o vinculando una hoja de trabajo de Microsoft Excel versión 5.0, 7.0, o Excel 97, puede preceder el intervalo con el nombre de la hoja de trabajo y un signo de exclamación; por ejemplo, Presupuesto!A1:C7.
	Nota   Cuando exporte a una hoja de cálculo, debe dejar este argumento en blanco. Si introduce un intervalo, la exportación no funcionará.
Observaciones

Se pueden exportar los datos de las consultas de selección de Microsoft Access a hojas de cálculo. Microsoft Access exporta el conjunto de resultados de la consulta, tratándolos como si fueran una tabla.

Los datos de hojas de cálculo que anexe a una tabla existente de Microsoft Access deben ser compatibles con la estructura de la tabla. Cada campo en la hoja de cálculo debe ser del mismo tipo de datos que el campo correspondiente en la tabla, y los campos deben estar en el mismo orden (a menos que haya establecido el argumento Tiene nombres de campos a Sí, en cuyo caso los nombres de los campos de la hoja de cálculo deben coincidir con los nombres de los campos de la tabla).

Esta acción es similar a apuntar a Obtener datos externos o a Guardar como o exportar en el menú Archivo de la ventana Base de datos y a elegir Importar o Vincular tablas. Estos comandos se utilizan para seleccionar un origen de datos, tal como Microsoft Access o un tipo de base de datos, hoja de cálculo, o archivo de texto. Si selecciona una hoja de cálculo, aparecerán una serie de cuadros de diálogo, o se ejecutará un asistente para Microsoft Access, en el que seleccione el nombre de la hoja de cálculo y las demás opciones. Los argumentos de la acción TransferirHojaCálculo reflejan las opciones de estos cuadros de diálogo o de los asistentes.

Nota   Si consulta o filtra una hoja de cálculo vinculada, la consulta o filtro distingue las mayúsculas de las minúsculas.

Si vincula a una hoja de cálculo Excel abierta en el modo Edición, Access esperará a que la hoja de cálculo Excel salga del modo Edición antes de completar el vínculo; no hay tiempo de espera excedido.

Para ejecutar la acción TransferirHojaCálculo en Visual Basic, use el método TransferSpreadsheet del objeto DoCmd.


Acción TransferirTexto

La acción TransferirTexto se utiliza para importar o exportar texto entre la base de datos activa de Microsoft Access y un archivo de texto. También puede vincular los datos de un archivo de texto a la base de datos activa de Microsoft Access. Con un archivo de texto vinculado, puede ver los datos de texto con Microsoft Access mientras se permite el acceso completo a los datos desde un programa procesador de texto. También puede importar, exportar o vincular a una tabla o lista de un archivo HTML (*.html).

Nota   Si vincula datos de un archivo de texto o de un archivo HTML, los datos son de sólo lectura en Microsoft Access.

Valores

La acción TransferirTexto utiliza los siguientes argumentos.

Argumento de acción	Descripción
Tipo de transferencia	El tipo de transferencia que desea realizar. Puede importar, exportar o vincular datos de archivos de texto delimitados o de archivos de texto de ancho fijo o archivos HTML. También puede exportar datos a un archivo de datos de combinación de correo de Microsoft Word, que luego puede usar con la característica de combinar correo de Microsoft Word para crear documentos combinados, tal como cartas de formularios y etiquetas de correo.
	Seleccione Importar delimitado, Importar ancho fijo, Importar HTML, Exportar delimitado, Exportar ancho fijo, Exportar HTML, Exportar combinación de Word para Windows, Vincular delimitado, Vincular ancho fijo o Vincular HTML en el cuadro Tipo de transferencia de la sección Argumentos de acción de la ventana Macro. El valor predeterminado es Importar delimitado.
Nombre de especificación	El nombre de especificación para el conjunto de opciones que determinan cómo se importa, exporta o vincula un archivo de texto. Este argumento es obligatorio para los archivos de texto de ancho fijo.
	Puede usar el subcomando Importar o Vincular tablas del comando Obtener datos externos o el comando Guardar como o exportar del menú Archivo para crear una especificación para un tipo determinado de archivo de texto, tal como un archivo de texto delimitado que usa tabulaciones para separar los campos y que tiene un formato MDA para las fechas. Cuando haga clic en uno de estos comandos y selecciona un tipo de archivo de texto para importar, exportar o vincular, se ejecutará el Asistente para importar texto, el Asistente para exportar texto o el Asistente para vincular texto. Puede hacer clic en el botón Avanzado del asistente y definir y guardar una especificación en el cuadro de diálogo que aparezca. Luego puede escribir el tipo del nombre de especificación en este argumento cuando desee importar o exportar el mismo tipo de archivo de texto.
	Puede importar, exportar o vincular archivos de texto delimitado sin escribir un nombre de especificación para este argumento. En este caso, Microsoft Access usa los valores predeterminados del cuadro de diálogo del asistente. Microsoft Access usa un formato predeterminado para los archivos de datos de combinación de correo, con lo que no tiene necesidad de escribir un nombre de especificación para este argumento cuando exporte estos tipos de archivos. Puede usar las especificaciones de importación y exportación con los archivos HTML, pero la única parte de la especificación que se aplica es la especificación para el formato del tipo de datos.
Nombre de la tabla	El nombre de la tabla Microsoft Access para importar, exportar o vincular datos de texto. También puede escribir el nombre de la consulta de selección de Microsoft Access de la que desea exportar los datos. Este argumento es obligatorio.
	Si hace clic en Importar delimitado, Importar ancho fijo o Importar HTML en el cuadro Tipo de transferencia, Microsoft Access anexa los datos de texto a esta tabla si ésta existe. En caso contrario, Microsoft Access crea una nueva tabla conteniendo los datos de texto.
	En Microsoft Access 97, no se puede usar una instrucción SQL para especificar los datos a exportar cuando esté usando la acción TransferirTexto. En lugar de usar una instrucción SQL, primero debe crear una consulta y luego especificar el nombre de la consulta en el argumento Nombre de la tabla.
Nombre de archivo	El nombre del archivo de texto para importar, exportar o vincular. Incluya la ruta de acceso completa. Este argumento es obligatorio.
	Microsoft Access crea un nuevo archivo de datos cuando exporta los datos desde Microsoft Access. Si el nombre del archivo es el mismo que el nombre de un archivo de texto existente, Microsoft Access reemplaza el archivo de texto existente.
	Si desea importar o vincular una tabla o lista determinada en un archivo HTML, puede usar el argumento Nombre de tabla HTML.
Contiene nombres de campo	Especifica si la primera fila del archivo de texto contiene los nombres de los campos. Si selecciona Sí, Microsoft Access usa los nombres de esta fila como nombres de campos en la tabla de Microsoft Access cuando importe o vincule los datos de texto. Si selecciona No, Microsoft Access trata la primera fila como una fila normal de datos. El valor predeterminado es No.
	Microsoft Access ignora este argumento para los archivos de datos de combinación de correo de Microsoft Word para Windows porque la primera fila debe contener los nombres de los campos.
	Cuando exporte una tabla o consulta de selección de Microsoft Access a un archivo de texto delimitado o de ancho fijo, Microsoft Access inserta los nombres de los campos de la tabla o consulta de selección en la primera fila del archivo de texto si ha seleccionado Sí para este argumento.
	Si está importando o vinculando un archivo de texto de ancho fijo y selecciona Sí en este cuadro, la primera fila conteniendo los nombres de los campos debe usar el delimitador de campos establecido en la especificación de importación y exportación para separar los nombres de los campos. Si está exportando a un archivo de texto de ancho fijo y selecciona Sí para este argumento, Microsoft Access inserta los nombres de los campos en la primera fila del archivo de texto con este delimitador.
Nombre de la tabla HTML	El nombre de la tabla o lista del archivo HTML que desea importar o vincular. Este argumento será ignorado, a menos que el argumento Tipo de transferencia esté establecido a Importar HTML o Vincular HTML. Si deja en blanco este argumento, se importa o vincula la primera tabla o lista del archivo HTML.
	El nombre de la tabla o de la lista del archivo HTML se determina por el texto especificado por la marca <CAPTION>, si es que hay alguna. Si no la hay, el nombre se determina por el texto especificado por la marca <TITLE>. Si hubiera más de una tabla o lista con el mismo nombre, Microsoft Access las distingue agregando un número al final de cada nombre; por ejemplo, Empleados1 y Empleados2.
Observaciones

Se pueden exportar los datos de las consultas de selección de Microsoft Access a archivos de texto. Microsoft Access exporta el conjunto de resultados de la consulta, tratándolos como si fueran una tabla.

Los datos de texto que anexe a una tabla existente de Microsoft Access deben ser compatibles con la estructura de la tabla. Cada campo en el texto debe ser del mismo tipo de datos que el campo correspondiente en la tabla, y los campos deben estar en el mismo orden (a menos que haya establecido el argumento Tiene nombres de campos a Sí, en cuyo caso los nombres de los campos del texto deben coincidir con los nombres de los campos de la tabla).

Esta acción es similar a apuntar a Obtener datos externos o a Guardar como o exportar en el menú Archivo de la ventana Base de datos y a elegir Importar o Vincular tablas. Estos comandos se utilizan para seleccionar un origen de datos, tal como Microsoft Access o un tipo de base de datos, hoja de cálculo o archivo de texto. Si selecciona un archivo de texto delimitado o de ancho fijo o un archivo HTML, un asistente le pedirá que seleccione el nombre del archivo y las demás opciones. Los argumentos de la acción TransferirTexto reflejan las opciones de estos asistentes.

Suegerencia   Una especificación de importación o exportación almacena la información que Microsoft Access necesita para importar, exportar o vincular un archivo de texto. Puede usar la especificación almacenada para importar, exportar o vincular datos de texto desde o a archivos de texto similares. Por ejemplo, podría recibir figuras semanales de ventas en un archivo de texto desde un gran sistema (mainframe). Puede crear y guardar una especificación para este tipo de datos y luego usar la especificación cuando agregue estos datos a la base de datos de Microsoft Access.

Nota   Si consulta o filtra un archivo de texto vinculado, la consulta o filtro distingue las mayúsculas de las minúsculas.

Para ejecutar la acción TransferirTexto en Visual Basic, use el método TransferText del objeto DoCmd.


Acción Salir

Puede utilizar la acción Salir para salir de Microsoft Access. La acción Salir también puede especificar una de las distintas opciones para guardar los objetos de base de datos antes de salir de Microsoft Access.

Valores

La acción Salir tiene el siguiente argumento:

Argumentos de acción	Descripción
Opciones	Especifica qué ocurre a los objetos no guardados cuando abandona Microsoft Access. Haga clic en Preguntar (para presentar los cuadros de diálogo que preguntan si se desea guardar cada objeto), Guardar todo (para guardar todos los objetos sin mostrar los cuadros de diálogo) o Salir (para abandonar sin guardar ningún objeto) en el cuadro Opciones de la sección Argumentos de acción de la ventana objetos de la macro. El valor predeterminado es Guardar todo.
Comentarios

Microsoft Access no ejecuta ninguna acción que siga a la acción Salir de una macro.

Puede utilizar esta acción para salir de Microsoft Access sin que se muestren los cuadros de diálogo Guardar utilizando un comando de menú personalizado o un botón de un formulario. Por ejemplo, puede tener un formulario modelo que se utilice para presentar los objetos de su puesto de trabajo personalizado. Este formulario podría tener un botón Salir que ejecutase una macro que contenga la acción Salir con el argumento Opciones establecido a Guardar todo.

Esta acción tiene el mismo efecto que hacer clic en Salir desde el menú Archivo. Si tiene algún objeto que no se haya guardado cuando haga clic en este comando, los cuadros de diálogo que aparecen son los mismos que los que se presentan cuando se selecciona Preguntar del argumento Opciones de la acción Salir.

Puede utilizar la acción Guardar de una macro para guardar un objeto determinado sin tener que abandonar Microsoft Access o cerrar el objeto.

Para ejecutar la acción Salir en Visual Basic, utilice el método Quit del objeto DoCmd.


Acción CambiarNombre

Puede utilizar la acción CambiarNombre para cambiar el nombre de un objeto de base de datos.

Valores

La acción CambiarNombre tiene los siguientes argumentos:

Argumentos de acción	Descripción
Nombre nuevo	Nombre nuevo del objeto de la base de datos. Escriba el nombre del objeto en el cuadro Nombre nuevo en la sección Argumentos de acción de la ventana Macro. Este argumento es obligatorio.
Tipo de objeto	El tipo de objeto al que desea cambiar el nombre. Haga clic en Tabla, Consulta, Formulario, Informe, Macro o Módulo . Para cambiar el nombre del objeto seleccionado en la ventana Base de datos, deje este argumento en blanco.
Nombre anterior	Nombre del objeto al que se va a cambiar el nombre. El cuadro Nombre anterior muestra todos los objetos en la base de datos del tipo seleccionado mediante el argumento Tipo de objeto. Si deja en blanco Tipo de objeto, deje también en blanco este argumento. Nota   Si ejecuta una macro que contiene la acción CambiarNombre en una base de datos de biblioteca, Microsoft Access busca primero el objeto con este nombre en la base de datos de biblioteca y luego en la base de datos actual.
Comentarios

El nuevo nombre de un objeto de la base de datos debe seguir las convenciones estándar para nombres de los objetos de Microsoft Access.

No puede cambiar el nombre de un objeto abierto.

Si se dejan en blanco los argumentos Tipo de objeto y Nombre anterior, Microsoft Access cambia el nombre al objeto seleccionado en la ventana Base de datos. Para seleccionar un objeto de la ventana Base de datos, puede utilizar la acción SeleccionarObjeto con el argumento En ventana Basede datos establecido a Sí.

También puede seleccionar un objeto haciendo clic en la ventana Base de datos, haciendo clic de nuevo de forma que se pueda editar su nombre e introduciendo el nuevo nombre. Con la acción CambiarNombre, no tiene que seleccionar primero el objeto de la ventana Base de datos y no tiene que detener la macro para introducir el nuevo nombre.

Esta acción se diferencia de la acción CopiarObjeto con la que crea una copia del objeto bajo un nuevo nombre.

Para ejecutar la acción CambiarNombre en Visual Basic, utilice el método Rename del objeto DoCmd.


Acción RepintarObjeto

Puede utilizar la acción RepintarObjeto para completar cualquier actualización pendiente de la pantalla de un objeto de la base de datos determinado o el objeto activo de la base de datos, si no se especifica ninguno. Tales actualizaciones incluyen cualquier cálculo pendiente de los controles del objeto.

Valores

La acción RepintarObjeto tiene los siguientes argumentos:

Argumentos de acción	Descripción
Tipo de objeto	Tipo del objeto a repintar. Haga clic en Tabla, Consulta, Formulario, Informe, Macro o Módulo del cuadro Tipo de objeto en la sección Argumentos de acción de la ventana Macro. Deje este argumento en blanco para seleccionar el objeto activo.
Nombre del objeto	Nombre del objeto a repintar. El cuadro Nombre del objeto muestra todos los objetos de la base de datos del tipo seleccionado por el argumento Tipo de objeto. Si deja en blanco el argumento Tipo de objeto, deje también en blanco este argumento.
Comentarios

Microsoft Access espera a completar las actualizaciones pendientes de las pantallas hasta que termina otras tareas pendientes. Con esta acción, puede forzar a volver a pintar de forma inmediata los controles del objeto especificado. Puede utilizar esta acción:

•	Cuando utilice la acción EstablecerValor para cambiar los valores en un número determinado de controles. Es posible que Microsoft Access no muestre los cambios de forma inmediata, especialmente si hay otros controles (como los controles calculados) que dependan de los valores de los controles modificados.

•	Cuando desee estar seguro de que el formulario que está viendo muestra los datos de todos sus controles. Por ejemplo, los controles que contienen objetos OLE no muestran sus datos de forma inmediata después de abrir un formulario.

Notas

•	Esta acción no genera una nueva consulta de la base de datos, de forma que no muestra los registros nuevos o cambiados ni quits los registros eliminados de la tabla o consulta base del objeto. Utilice la acción NuevaConsulta para consultar de nuevo el origen del objeto o uno de sus controles. Utilice la acción MostrarTodosRegistros para presentar los registros más recientes y quitar los filtros que se hayan aplicado.

•	La acción RepintarObjeto no tiene el mismo efecto que elegir el comando Actualizar del menú Registros, que muestra los cambios que usted u otros usuarios han realizado en los registros que se muestran actualmente en los formularios y hojas de datos.

Para ejecutar la acción RepintarObjeto en Visual Basic, utilice el método RepaintObject del objeto DoCmd.


Acción NuevaConsulta

Puede utilizar la acción NuevaConsulta para actualizar los datos de un determinado control del objeto activo consultando de nuevo el origen del control. Si no se especifica ningún control, esta acción requiere el origen del propio objeto. Utilice esta acción para asegurarse de que el objeto activo o uno de sus controles presenta los datos más actuales.

Valores

La acción NuevaConsulta tiene el siguiente argumento:

Argumentos de acción	Descripción
Nombre del control	Nombre del control que desea actualizar. Escriba el nombre del control en el cuadro Nombre del control en la sección Argumentos de acción de la ventana Macro. Sólo debería utilizar el nombre del control, no el identificador completo, (como Forms!NombreFormulario!NombreControl). Deje este argumento en blanco para consultar de nuevo el origen del objeto activo. Si el objeto activo es una hoja de datos o un conjunto de resultados de una consulta, debe dejar este argumento en blanco.
Comentarios

La acción NuevaConsulta realiza alguna de las acciones siguientes:

•	Ejecuta de nuevo la consulta en la que está basada el control o el objeto.

•	Presenta cualquier registro nuevo o modificado y quita cualquier registro eliminado de la tabla en la que está basado el control o el objeto.

Los controles basados en una consulta o tabla incluyen:

•	Cuadros de listas y cuadros combinados.

•	Controles del subformulario.

•	Objetos OLE, como los gráficos.

•	Controles que contengan funciones agregadas de dominio, como DSuma (DSum).

Si el control especificado no se basa en una consulta o tabla, esta acción fuerza a calcular de nuevo el control.

Si deja el argumento Nombre del control en blanco, la acción NuevaConsulta tiene el mismo efecto que presionar MAYÚS+F9 cuando el objeto tiene el enfoque. Si un control de un subformulario tiene el enfoque, esta acción vuelve a consultar sólo el origen del subformulario (exactamente lo que hace al presionar MAYÚS+F9).

Nota   La acción NuevaConsulta requiere el origen del control o el objeto. Por el contrario, la acción RepintarObjeto repinta los controles del objeto especificado pero no vuelve a consultar la base de datos ni presenta los nuevos registros. La acción MostrarTodosRegistros no sólo requiere el objeto activo, sino que también quita los filtros que se hayan aplicado; esto no lo hace la acción NuevaConsulta.

Si desea volver a consultar un control que no está en el objeto activo, debe utilizar el método Requery de Visual Basic, no la acción NuevaConsulta, o su correspondiente Requery del objeto DoCmd. El método Requery de Visual Basic es más rápido que la acción NuevaConsulta y que el método DoCmd.Requery. Cuando utiliza la acción NuevaConsulta o el método DoCmd.Requery, Microsoft Access cierra la consulta y la vuelve a cargar desde la base de datos; cuando utiliza el método Requery de Visual Basic Microsoft Access ejecuta de nuevo la consulta sin cerrar y volver a cargarla. Observe que el método Requery de DAO funciona del mismo modo que el método Requery de Microsoft Access.


Acción Restaurar

Puede utilizar la acción Restaurar para restablecer una ventana maximizada o minimizada a su tamaño anterior.

Valores

La acción Restaurar no tiene ningún argumento.

Comentarios

Esta acción funciona sobre el objeto seleccionado. Si se ha minimizado un objeto, puede seleccionarlo primero utilizando la acción SeleccionarObjeto y luego restablecerlo a su tamaño anterior utilizando la acción Restaurar.

Puede utilizar la acción DesplazarTamaño para mover o cambiar el tamaño de una ventana que haya restaurado.

La acción Restaurar tiene el mismo efecto que hacer clic en el botón Restaurar de la esquina superior derecha de la ventana o hacer clic en el comando Restaurar del menú Control de la ventana.

Para ejecutar la acción Restaurar en Visual Basic, utilice el método Restore del objeto DoCmd.


Acción EjecutarAplicación

Puede utilizar la acción EjecutarAplicación para ejecutar una aplicación basada en Windows o en MS-DOS, como Microsoft Excel, Microsoft Word, o Microsoft PowerPoint, desde dentro de Microsoft Access. Por ejemplo, puede pegar los datos de la hoja de cálculo de Microsoft Excel en la base de datos Microsoft Access.

Valores

La acción EjecutarAplicación tiene el siguiente argumento:

Argumentos de acción	Descripción
Línea de comandos	Línea de comandos que se utiliza para iniciar la aplicación (incluyendo la ruta de acceso y demás parámetros necesarios, como las opciones que ejecutan la aplicación de un modo particular). Introduzca la línea de comandos en el cuadro Línea de comandos de la sección Argumentos de acción de la ventana Macro. Este argumento es obligatorio.
Comentarios

La aplicación seleccionada con esta acción se carga y ejecuta en primer plano. La macro que contiene esta acción continúa su ejecución.

Puede transferir datos entre otra aplicación y Microsoft Access mediante la utilidad intercambio dinámico de datos (DDE) de Windows o el Portapapeles. Puede utilizar la acción EnviarTeclas para enviar pulsaciones de teclas a la otra aplicación (aunque DDE es un método más eficiente de transferir datos). También puede compartir los datos entre las aplicaciones utilizando la Automatización OLE.

Las aplicaciones basadas en MS-DOS se ejecutan en una ventana MS-DOS dentro del entorno de Windows.

En Windows 3.1, esta acción tiene el mismo efecto que hacer doble clic en el icono de un programa de un grupo de programas de Windows o que ejecutar un programa desde el cuadro de diálogo Ejecutar del Administrador de programas de Windows. En Windows 95, hay varias formas de iniciar una aplicación: iniciar el programa desde el Explorador de Windows, utilizar el comando Ejecutar en el menú Inicio o hacer doble clic en el icono de un programa en el Escritorio de Windows.

En Visual Basic no puede ejecutar la acción EjecutarAplicación. En su lugar, utilice la función Shell de Visual Basic.


Acción EjecutarCódigo

Puede utilizar la acción EjecutarCódigo para llamar a un procedimiento Function de Visual Basic.

Valores

La acción EjecutarCódigo tiene el siguiente argumento:

Argumentos de acción	Descripción
Nombre de función	Nombre del procedimiento Function de Visual Basic que va a ejecutarse. Cierre entre paréntesis los argumentos de la función. Introduzca el nombre de la función en el cuadro Nombre de función en la sección Argumentos de acción de la ventana Macro. Este argumento es obligatorio. Nota   Para utilizar el Generador de expresiones para seleccionar una función para este argumento, haga clic en el botón Generar  [image]  a la derecha del cuadro Nombre de función. Haga clic en la función deseada de la lista del Generador de expresiones.
Comentarios

Los procedimientos Function generados por el usuario se guardan en módulos de Microsoft Access

Debe incluir los paréntesis, aunque el procedimiento Function no tenga ningún argumento, como en el siguiente ejemplo:

ComprobarFunción ()

Al contrario de los nombres de las funciones definidas por el usuario, que se utilizan para asignar valores a propiedades de evento, el nombre de función del argumento Nombre de función no empieza con un signo igual (=).

Microsoft Access ignora el valor que devuelve la función.

Sugerencia   Para ejecutar un procedimiento Sub o procedimiento de evento escrito en Visual Basic, cree un procedimiento Function que llame al procedimiento Sub o procedimiento de evento. Luego utilice la acción EjecutarCódigo para ejecutar el procedimiento Function.

Si utiliza la acción EjecutarCódigo para llamar a una función, Microsoft Access busca la función con el nombre que indica el argumento Nombre de función en los módulos estándar de la base de datos. Sin embargo, cuando esta acción se ejecuta como respuesta a la elección de un comando de menú de un formulario o informe, o como respuesta a un evento de un formulario o informe, Microsoft Access busca primero la función en el módulo de clase del formulario o informe y luego en los módulos estándar. Microsoft Access no busca los módulos de clase que aparecen en la ficha Módulos de la ventana Base de datos para la función especificada por el argumento Nombre de función.

Esta acción no está disponible en Visual Basic. Ejecute el procedimiento Function que desee directamente en Visual Basic.


Acción EjecutarMacro

Puede utilizar la acción EjecutarMacro para ejecutar una macro, que puede pertenecer a un grupo de macros.

Puede usar esta acción para:

•	Ejecutar una macro desde dentro de otra macro.

•	Ejecutar una macro basada en una condición determinada.

•	Adjuntar una macro a un comando de menú personalizado.

Valores

La acción EjecutarMacro tiene los siguientes argumentos:

Argumentos de acción	Descripción
Nombre de macro	Nombre de la macro que se va a ejecutar. El cuadro Nombre de macro de la sección Argumentos de acción de la ventana Macro muestra todas las macros (y grupos de macros) de la base de datos actual. Si la macro pertenece a un grupo de macros, se muestra en la lista bajo el nombre del grupo de macros, como NombreGrupoMacros.NombreMacro. Este argumento es obligatorio.
	Si ejecuta una macro que contiene la acción EjecutarMacro en una base de datos de biblioteca, Microsoft Access busca la macro con este nombre en la base de datos de biblioteca y no en la base de datos actual.
Número de repeticiones	Número máximo de veces que la macro se va a ejecutar. Si deja este argumento en blanco (y el argumento Expresión de repetición también está en blanco), la macro se ejecuta una sola vez.
Expresión de repetición	Expresión que se evalúa como Verdadero (-1) o Falso (0). La macro detiene su ejecución si la expresión se evalúa como Falso. La expresión se evalúa cada vez que la macro se ejecuta.
Comentarios

Si introduce un nombre de grupo de macros en el argumento Nombre de macro, Microsoft Access ejecuta la primera macro del grupo de macros.

Esta acción es similar a hacer clic en Macro del menú Herramientas, que puede utilizar para seleccionar y ejecutar una macro determinada. No obstante, el comando ejecuta la macro sólo una vez, mientras que la acción EjecutarMacro puede ejecutar una macro tantas veces como desee.

Sugerencia   Puede utilizar los argumentos Número de repeticiones y Expresión de repetición para determinar cuántas veces se ejecuta la macro:

•	Si deja ambos argumentos en blanco, la macro se ejecuta una vez.

•	Si introduce un número en Número de repeticiones pero deja la Expresión de repetición en blanco, la macro se ejecuta el número de veces que indica este argumento.

•	Si deja el argumento Número de repeticiones en blanco pero introduce una expresión en Expresión repetición, la macro se ejecuta hasta que la expresión se evalúe como Falso.

•	Si introduce valores en ambos argumentos, la macro se ejecuta el número de veces que especifica el argumento Número de repeticiones o hasta que la Expresión de repetición sea Falso.

Cuando ejecuta una macro que contiene la acción EjecutarMacro, al llegar a la acción EjecutarMacro Microsoft Access ejecuta la macro indicada en Nombre de macro. Cuando termina la macro llamada, Microsoft Access vuelve a la macro original y ejecuta la siguiente acción.

Notas

•	Puede llamar una macro del mismo grupo de macros o de otro grupo de macros.

•	Puede tener macros que contengan macros. Es decir, puede ejecutar la macro A, que a su vez llama a la macro B, y así sucesivamente. En cada caso, cuando termina la macro llamada, Microsoft Access devuelve el control a la macro que la llamó y ejecuta la siguiente acción de la macro.

Sugerencia   Puede utilizar la acción EjecutarMacro, en un grupo de macros que definen comandos personalizados para una barra de menús personalizada, para ejecutar una macro desde el menú personalizado. Sin embargo, es más fácil utilizar la nueva funcionalidad de las barras de comandos para ejecutar una macro desde una barra de menús, barra de herramientas o menú contextual. En el menú Ver, elija Barras de herramientas y haga clic en Personalizar para mostrar el cuadro de diálogo Personalizar. En la ficha Barras de herramientas, seleccione la barra de menú, barra de herramientas o menú contextual desde el que desee ejecutar una macro. En la ficha Comandos, haga clic en Todas las macros en el cuadro Categorías, luego en el cuadro Comandos seleccione y arrastre la macro que desee ejecutar a la barra de menú, barra de herramientas o menú contextual. Cuando haga clic en el icono para esta macro en la barra de menús, barra de herramientas o menú contextual, Microsoft Access ejecutará la macro. También puede arrastrar una macro desde la ventana Base de datos a la barra de menús o a la barra de herramientas y Microsoft Access creará un icono que ejecutará esa macro.

Para ejecutar la acción EjecutarMacro en Visual Basic, utilice el método RunMacro del objeto DoCmd.


Acción SeleccionarObjeto

Puede utilizar la acción SeleccionarObjeto para seleccionar un determinado objeto de la base de datos.

Valores

La acción SeleccionarObjeto tiene los siguientes argumentos:

Argumentos de acción	Descripción
Tipo de objeto	Tipo del objeto de la base de datos que se va a seleccionar. Haga clic en Tabla, Consulta, Formulario, Informe, Macro o Módulo en el cuadro Tipo de objeto en la sección Argumentos de la acción de la ventana Macro. Este argumento es obligatorio.
Nombre del objeto	Nombre del objeto a seleccionar. El cuadro Nombre del objeto muestra todos los objetos de la base de datos del tipo seleccionado en el argumento Tipo de objeto. Este argumento es obligatorio, a menos que establezca el argumento de la ventana Base de datos a Sí. Si establece el argumento de la ventana Base de datos a Sí y deja el argumento Nombre del objeto en blanco, Microsoft Access selecciona la ficha en la ventana Base de datos que se corresponde con el objeto de la base de datos que especificó en el argumento Tipo de objeto.
En ventana Base de datos	Especifica si Microsoft Access selecciona el objeto de la ventana Base de datos. Haga clic en Sí (para seleccionar el objeto) o No (para no seleccionar el objeto de la ventana Base de datos). El valor predeterminado es No.
Comentarios

La acción SeleccionarObjeto funciona con cualquier objeto de Microsoft Access que pueda recibir el enfoque. Esta acción da el enfoque al objeto específico y muestra el objeto si está oculto. Si el objeto es un formulario, la acción SeleccionarObjeto establece la propiedad Visible del formulario a Sí y devuelve el formulario al modo establecido por las propiedades del formulario (por ejemplo, como formulario modal o formulario emergente).

Si el objeto no está abierto en alguna de las otras ventanas de Microsoft Access, puede seleccionarlo en la ventana Base de datos estableciendo el argumento En ventana Base de datos a Sí. Si establece el argumento En ventana Base de datos a No, le aparecerá un mensaje de error cuando intente elegir un objeto que no esté abierto.

A menudo puede utilizar esta acción para seleccionar un objeto sobre el que desee llevar a cabo acciones adicionales. Por ejemplo, puede restablecer un objeto que se ha minimizado (mediante la acción Restaurar) o maximizar una ventana que contenga un objeto con el que desea trabajar (mediante la acción Maximizar).

Si selecciona un formulario, puede utilizar las acciones IrAControl, IrARegistro e IrAPágina para moverse a determinadas áreas del formulario. La acción IrARegistro también funciona para las hojas de datos.

Para ejecutar la acción SeleccionarObjeto en Visual Basic, utilice el método SelectObjet del objeto DoCmd.


Acción EnviarTeclas

Puede utilizar la acción EnviarTeclas para enviar pulsaciones de teclas directamente a Microsoft Access o a una aplicación activa basada en Windows.

Valores

La acción EnviarTeclas tiene los siguientes argumentos:

Argumentos de acción	Descripción
Pulsaciones de teclas	Las pulsaciones que desee que sean procesadas por Microsoft Access o por la aplicación. Introduzca las pulsaciones de teclas en el cuadro Pulsaciones de teclas en la sección Argumentos de acción de la ventana Macro. Puede introducir hasta 255 caracteres. Este argumento es obligatorio.
Esperar	Especifica si la macro debe hacer una pausa hasta que las pulsaciones se hayan procesado. Haga clic en Sí (para hacer una pausa) o en No (para no hacerla). El valor predeterminado es No.
Comentarios

Microsoft Access procesa las pulsaciones de teclas que recibe a través de la acción EnviarTeclas exactamente como si las hubiera escrito usted directamente en una ventana de Microsoft Access.

Para especificar las pulsaciones de tecla, utilice la misma sintaxis que el comando SendKeys.

Nota   Puede ocurrir un error si el argumento Pulsaciones de teclas contiene una sintaxis incorrecta; corrija el texto incorrecto u otros valores que no sean apropiados para esa ventana.

Puede utilizar esta acción para introducir información sobre un cuadro de diálogo, particularmente si no desea interrumpir la macro para responder de forma manual al cuadro de diálogo. Algunas acciones de Microsoft Access, como Imprimir y BuscarRegistro, seleccionan de forma automática las opciones de determinados cuadros de diálogo que se usan frecuentemente. Puede utilizar la acción EnviarTeclas para seleccionar las opciones de los cuadros de diálogo que se usan menos frecuentemente.

Notas

•	Dado que el cuadro de diálogo detiene la macro, debe ejecutar la acción EnviarTeclas antes que la acción que hace que se abra el cuadro de diálogo y establecer el argumento Esperar a No.

•	El tiempo de ejecución de las pulsaciones de tecla en Microsoft Access o cualquier otra aplicación puede ser muy variable. Por ello, se recomienda que si hay cualquier otra manera (como la acción BuscarRegistro) disponible para realizar la tarea deseada, evite el uso de la acción EnviarTeclas para rellenar las opciones de cuadros de diálogo.

Si desea enviar más de 255 caracteres a Microsoft Access o cualquier otra aplicación basada en Windows, puede utilizar varias acciones EnviarTeclas, una a continuación de la otra, en una macro.

La utilización de la acción EnviarTeclas para enviar pulsaciones de tecla desencadena los correspondientes eventos KeyDown, KeyUp y KeyPress. El envío de pulsaciones de teclas que no son ANSI (como una tecla de función) no desencadena el evento KeyPress.

Esta acción no está disponible en Visual Basic. En su lugar, utilice la instrucción SendKeys.


Acción EstablecerValor

Puede utilizar la acción EstablecerValor para establecer el valor de un campo, control o propiedad en un formulario, una hoja de datos de un formulario o un informe de Microsoft Access.

Valores

La acción EstablecerValor tiene los siguientes argumentos:

Argumentos de acción	Descripción
Elemento	Nombre del campo, control o propiedad cuyo valor desea establecer. Introduzca el nombre del campo, control o propiedad en el cuadro Elemento en la sección Argumentos de acción de la ventana Macro. Debe utilizar la sintaxis completa para hacer referencia a este elemento, como nombrecontrol (para un control del formulario o informe desde el que se llamó a la macro) o Forms!NombreFormulario!NombreControl. Este argumento es obligatorio.
Expresión	Expresión que Microsoft Access utiliza para establecer el valor del elemento. Siempre debe utilizar la sintaxis completa para hacer referencia a los objetos de la expresión. Por ejemplo, para incrementar el valor de un control Salario del formulario Empleados en un 10 por ciento, utilice Forms!Empleados!Salario*1.1. Este argumento es obligatorio. Nota   No debe utilizar un signo igual (=) delante de la expresión de este argumento. Si lo hace, Microsoft Access evalúa la expresión y luego utiliza este valor como la expresión de este argumento. Esto puede producir resultados inesperados si la expresión es una cadena. Por ejemplo, si escribe ="Cadena1" en este argumento, Microsoft Access evalúa primero la expresión como Cadena1. Luego utiliza Cadena1 como la expresión de este argumento, esperando encontrar en el formulario o informe que llamó la macro un control o propiedad con el nombre Cadena1.
Nota   Para utilizar el Generador de expresiones para crear una expresión para cualquiera de estos argumentos de acción, haga clic en el botón Generar  [image]  a la derecha del cuadro Elemento o Expresión.

Comentarios

Puede utilizar esta acción para establecer un valor de un campo o control de un formulario, una hoja de datos de un formulario o un informe. También puede establecer el valor de casi todas las propiedades del control, del formulario y del informe en cualquier vista. Para averiguar si una propiedad determinada puede establecerse utilizando una macro y cuál es la vista con la que puede establecerse, consulte el tema correspondiente a esa propiedad.

También puede establecer el valor de un campo de la tabla base de un formulario aunque el propio formulario no contenga un control dependiente con el campo. Utilice la sintaxis Forms!NombreFormulario!NombreCampo del cuadro Elemento para establecer el valor de dicho campo. También puede hacer referencia a un campo de la tabla base de un informe utilizando la sintaxis Reports!NombreInforme!NombreCampo, aunque debe haber un control del informe relacionado con este campo, o debe haber una referencia al campo en un control calculado del informe.

Si establece el valor de un control en un formulario, la acción EstablecerValor no desencadena las reglas de validación del control a nivel de formulario, aunque sí las reglas de validación del campo base, a nivel de tabla si el control es un control dependiente. La acción EstablecerValor desencadena también el cálculo de nuevo, aunque este cálculo puede que no se produzca de forma inmediata. Para volver a pintar de forma inmediata y forzar el cálculo para que termine, utilice la acción RepintarObjeto. El valor que usted establece en un control utilizando la acción EstablecerValor tampoco se ve afectado por una máscara de entrada establecida en la propiedad MáscaraDeEntrada (InputMask) del control o campo base.

Para cambiar el valor de un control, puede utilizar la acción EstablecerValor en una macro especificada por la propiedad de evento DespuésDeActualizar (AfterUpdate) del control. No obstante, no puede utilizar la acción EstablecerValor en una macro especificada por la propiedad de evento AntesDeActualizar (BeforeUpdate) del control para cambiar el valor de un control (aunque puede utilizar EstablecerValor para cambiar el valor de los otros controles). También puede usar la acción EstablecerValor en una macro especificada por las propiedades AntesDeActualizar (BeforeUpdate) o DespuésDeActualizar (AfterUpdate) de un formulario para cambiar el valor de cualquiera de los controles del registro actual.

Nota   No puede utilizar la acción EstablecerValor para establecer el valor de los siguientes controles:

•	Los controles dependientes y los controles calculados de los informes

•	Los controles calculados de los formularios

Sugerencia   Puede utilizar la acción EstablecerValor para ocultar o mostrar un formulario en la vista Formulario. Introduzca Forms!nombreformulario.Visible en el cuadro Elemento y No o Sí en el cuadro Expresión. Si establece la propiedad Visible de un formulario modal a No oculta el formulario y el formulario es no modal. Si establece la propiedad a Sí muestra el formulario y lo hace modal de nuevo.

Si cambia el valor de un dato o agrega uno nuevo a un control utilizando la acción EstablecerValor en una macro, no desencadena eventos como BeforeUpdate, BeforeInsert o Change, que se producen cuando cambia o introduce datos en esos controles en la interfaz de usuario. Estos eventos tampoco ocurren si establece el valor del control utilizando Visual Basic.

Esta acción no está disponible en Visual Basic. Establezca el valor directamente en Visual Basic.


Acción EstablecerAdvertencias

Puede utilizar la acción EstablecerAdvertencias para activar y desactivar los mensajes del sistema.

Valores

La acción EstablecerAdvertencias tiene el siguiente argumento:

Argumentos de acción	Descripción
Activar advertencias	Especifica si se muestran los mensajes del sistema. Haga clic en Sí (para activar los mensajes del sistema) o No (para desactivar los mensajes del sistema) en el cuadro Activar advertencias de la sección Argumentos de acción de la ventana Macro. El valor predeterminado es No.
Comentarios

Puede utilizar esta acción para evitar que las advertencias y cuadros de mensajes modales detengan la macro. Sin embargo, los mensajes de error siempre se muestran. Microsoft Access presenta también los cuadros de diálogo que requieren de alguna entrada que no sea simplemente elegir un botón (como Aceptar, Cancelar, Sí o No); por ejemplo, cualquier cuadro de diálogo que requiera que introduzca texto o seleccione una de entre varias opciones.

Llevar a cabo esta acción con el argumento Activar avisos establecido a No tiene el mismo efecto que presionar INTRO cuando se presenta un cuadro de advertencia o de mensaje. Normalmente, se elige el botón Aceptar o Sí en respuesta a la advertencia o mensaje.

Cuando termina la macro, Microsoft Access activa de nuevo el sistema de mensajes, de forma automática, a activado.

A menudo, se utiliza esta acción con la acción Eco, que oculta los resultados de una macro hasta que está terminada. Así mismo, puede utilizar la acción EstablecerAdvertencias para ocultar los cuadros de advertencia y de mensajes.

Advertencia   Aunque la acción EstablecerAdvertencias puede simplificar las interacciones con las macros, debe tener cuidado con la desactivación de los mensajes del sistema. En algunas situaciones no deseará continuar una macro si se presenta un determinado mensaje. A menos que esté muy seguro del resultado de todas las acciones de la macro, debería evitar utilizar esta acción.

Para ejecutar la acción EstablecerAdvertencias en Visual Basic, utilice el método SetWarnings del objeto DoCmd.


Acción MostrarTodosRegistros

Puede utilizar la acción MostrarTodosRegistros para eliminar cualquier filtro de la tabla, conjunto de resultados de la consulta o formulario activo y presentar todos los registros de la tabla o conjunto de resultados o todos los registros de la tabla o consulta base del formulario.

Valores

La acción MostrarTodosRegistros no tiene ningún argumento.

Comentarios

Puede utilizar esta acción para hacer que se presenten todos los registros (incluyendo los registros nuevos o modificados) de una tabla, conjunto de resultados de la consulta o formulario. Esta acción realiza una nueva consulta de los registros de un formulario o subformulario.

También puede utilizar esta acción para quitar cualquier filtro que se aplique con la acción AplicarFiltro, el comando Aplicar filtro u ordenar del menú Registros o el argumento Nombre del filtro o Condición WHERE de la acción AbrirFormulario.

Esta acción tiene el mismo efecto que hacer clic en Quitar filtro u ordenar del menú Registros o hacer clic en Quitar filtro  [image] de la barra de herramientas de la vista Formulario o de la vista Hoja de datos.

Para ejecutar la acción MostrarTodosRegistros en Visual Basic, utilice el método ShowAllRecords del objeto DoCmd.


Acción DetenerTodasMacros

Puede utilizar la acción DetenerTodasMacros para detener todas las macros que estén actualmente en ejecución.

Valores

La acción DetenerTodasMacros no tiene ningún argumento.

Comentarios

Usará normalmente esta acción cuando una condición de error haga necesario detener todas las macros. Puede utilizar una expresión condicional en la fila de acción de la macro que contenga esta acción. Cuando la expresión se evalúa como Verdadero (-1), Microsoft Access detiene todas las macros.

Por ejemplo, puede tener una macro que presente un cuadro de mensaje como una acción entre un grupo de acciones complejas, incluyendo ejecutar otras macros. Si el usuario hace clic en Cancelar en este cuadro de mensaje, la acción DetenerTodasMacros puede detener todas las macros que estén en ejecución.

Si una macro ha utilizado las acciones Eco o EstablecerAdvertencias para desactivar el eco o la presentación de los mensajes del sistema, la acción DetenerTodasMacros volverá a activarlos automáticamente.

Esta acción no está disponible en Visual Basic.


Acción DetenerMacro

Puede utilizar la acción DetenerMacro para detener la macro que se esté ejecutando en ese momento.

Valores

La acción DetenerMacro no tiene ningún argumento.

Comentarios

Normalmente, utilizará esta acción cuando una condición haga necesario detener la macro. Puede utilizar una expresión condicional en la fila de acción de la macro que contiene esta acción. Cuando la expresión se evalúa como Verdadero (-1), Microsoft Access detiene la macro.

Por ejemplo, puede crear una macro que abra un formulario que muestre los pedidos totales diarios para la fecha introducida en el cuadro de diálogo personalizado. Puede utilizar una expresión condicional para estar seguro de que el control FechaPedido del cuadro de diálogo contiene una fecha válida. Si no la contiene, la acción CuadroMsj puede presentar un cuadro de mensaje y la acción DetenerMacro puede detener la macro.

Si una macro ha utilizado las acciones Eco o EstablecerAdvertencias para desactivar el eco o la presentación de los mensajes del sistema, la acción DetenerMacro volverá a activarlos automáticamente.

Esta acción no está disponible en Visual Basic.


Acción EliminarObjeto

La acción EliminarObjeto se utiliza para eliminar un objeto de base de datos determinado.

Valores

La acción EliminarObjeto se utiliza los siguientes argumentos.

Argumento de acción	Descripción
Tipo de objeto	El tipo de objeto a eliminar. Haga clic en Tabla, Consulta, Formulario, Informe, Macro o Módulo en el cuadro Tipo de objeto de la sección Argumentos de acción de la ventana Macro. Para eliminar el objeto seleccionado en la ventana Base de datos, deje este argumento en blanco.
Nombre del objeto	El nombre del objeto a eliminar. El cuadro Nombre del objeto muestra todos los objetos de la base de datos del tipo seleccionado por el argumento Tipo de objeto. Si deja en blanco el argumento Tipo de objeto, deje también en blanco este argumento.
	Si ejecuta una macro que contenga la acción EliminarObjeto en una base de datos de biblioteca, Microsoft Access busca el objeto con este nombre en primer lugar en la base de datos de biblioteca, y luego en la base de datos activa.
Advertencia   Si deja en blanco los argumentos Tipo de objeto y Nombre del objeto, cuando Microsoft Access encuentra la acción EliminarObjeto, elimina el objeto seleccionado en la ventana Base de datos sin mostrar ningún mensaje de advertencia. Para seleccionar un objeto de la ventana Base de datos, puede usar la acción SeleccionarObjeto con el argumento En ventana Base de datos establecido a Sí.

Comentarios

La acción EliminarObjeto se utiliza para eliminar los objetos temporales que ha creado mientras se ejecuta la macro. Por ejemplo, podría utilizar la acción AbrirConsulta para ejecutar una consulta de creación de tabla que crea una tabla temporal. Cuando haya acabado de usar la tabla temporal, puede utilizar la acción EliminarObjeto para eliminarla.

Esta acción tiene el mismo efecto que seleccionar un objeto en la ventana Base de datos y luego presionar la tecla SUPR o hacer clic en Eliminar en el menú Edición.

Para ejecutar la acción EliminarObjeto en Visual Basic, puede usar el método DeleteObject del objeto DoCmd.


Acción SalidaHacia

La acción SalidaHacia se utiliza para dar salida a los datos del objeto de base de datos Microsoft Access determinado (una hoja de datos, formulario, informe o módulo) a un archivo en formato de Microsoft Excel 97 (*.xls), de texto MS-DOS (*.txt), o de texto enriquecido (*.rtf). También puede dar salida a un archivo en formato HTML (*.html), a archivos en formato Microsoft Internet Information Server (*.htx, *.idc) o a un archivo en formato de página Active Server de Microsoft (*.asp). Los archivos con el formato Microsoft Internet Information Server también pueden ser utilizados con Microsoft Personal Web Server.

Valores

La acción SalidaHacia utiliza los siguientes argumentos.

Argumento de acción	Descripción
Tipo de objeto	El tipo de objeto que contiene los datos a enviar. Haga clic en Tabla (para una hoja de datos de tabla), Consulta (para una hoja de datos de consulta), Formulario (para un formulario u hoja de datos del formulario), Informe o Módulo en el cuadro Tipo de objeto en la sección Argumentos de acción de la ventana Macro. No se pueden enviar datos a una macro. Si desea enviar al objeto activo, seleccione su tipo con este argumento, pero deje en blanco el argumento Nombre del objeto. Este argumento es obligatorio. El valor predeterminado es Tabla.
Nombre del objeto	El nombre del objeto que contiene los datos a enviar. El cuadro Nombre del objeto muestra todos los objetos de la base de datos del tipo seleccionado por el argumento Tipo de objeto.
	Si ejecuta una macro que contenga la acción SalidaHacia en una base de datos de biblioteca, Microsoft Access busca el objeto con este nombre primero en la base de datos de biblioteca, y luego en la base de datos activa.
Formato de salida	El tipo de formato de salida que desea para los datos. En el cuadro puede hacer clic en HTML (*.html), Página Active Server de Microsoft (*.asp), Microsoft Excel (*.xls), Microsoft IIS (*.htx, *.idc), Texto MS-DOS (*.txt) o Formato de texto enriquecido (*.rtf). Los módulos sólo se se pueden enviar en el formato de texto MS-DOS. Los formatos Microsoft Internet Information Server y el formato de páginas Active Server de Microsoft sólo están disponibles para las tablas, consultas y formularios. Si deja este argumento en blanco, Microsoft Access le preguntará el formato de salida.
Archivo de salida	El archivo al que desea enviar los datos, incluyendo la ruta de acceso completa. Puede incluir la extensión estándar del nombre de archivo (.asp, .htm o .html, .htx, .xls, .txt, o .rtf) para el formato de salida que seleccione con el argumento Formato de salida, aunque no es obligatorio. Si envía a archivos Microsoft Internet Information Server o a páginas Active Server de Microsoft, Microsoft Access creará siempre archivos con las extensiones estándar de nombre de archivo .htx e .idc o .asp. Si deja en blanco el argumento Archivo de salida, Microsoft Access le pedirá un nombre del archivo de salida.
Autoinicio	Especifica si desea que la aplicación apropiada se inicie inmediatamente después de que se ejecute la acción SalidaHacia, con el archivo especificado por el argumento Archivo de salida abierto. Si selecciona Sí, se iniciará una de las siguientes aplicaciones del objeto Microsoft Access con el archivo de salida abierto: Microsoft Excel (para los archivos .xls), Microsoft Windows Notepad (para los archivos .txt), o Microsoft Word (para los archivos .rtf). Para los archivos .html, se iniciará su explorador Internet predeterminado (tal como Microsoft Internet Explorer). Este argumento se ignora para los archivos de Microsoft Internet Information Server y de páginas Active Server de Microsoft. Si selecciona No, no se inicia la aplicación. El valor predeterminado es No.
Archivo de plantilla	La ruta de acceso y el nombre de archivo de un archivo que desee usar como plantilla para un archivo .html, .htx, o .asp. El archivo de plantilla es un archivo que contiene marcas HTML.
Comentarios

Los datos Microsoft Access se envían en el formato seleccionado y pueden ser leídos por cualquier aplicación que utilice el mismo formato. Por ejemplo, puede enviar un informe de Microsoft Access con su formato a un documento con formato de texto enriquecido y luego abrir el documento en Microsoft Word.

Si envía el objeto de base de datos a un formato HTML, Microsoft Access crea un archivo en formato HTML que contenga los datos del objeto. Puede usar el argumento Archivo de plantilla para especificar un archivo para usar de plantilla para el archivo .html.

Si el objeto se envía en formato Microsoft Internet Information Server, Microsoft Access crea dos archivos:

•	Un archivo .idc, que contiene información acerca de cómo conectar a un origen de datos ODBC y una instrucción SQL a ejecutar contra este origen de datos. En este caso, el objeto Microsoft Access que esté enviando contiene los datos definidos por la instrucción SQL y la base de datos activa de Microsoft Access es el origen de datos ODBC

•	Un archivo .htx, que especifica cómo dar formato como un documento HTML a los datos devueltos por la instrucción SQL especificado en el archivo .idc. Puede usar el argumento Archivo de plantilla para especificar un archivo .html para que se utilice como plantilla para el archivo .htx.

Microsoft Internet Information Server utiliza los archivos .htx e .idc para crear un archivo .html con los datos del objeto Microsoft Access que envíe.

Si envía un objeto de base de datos a un formato de páginas Active Server de Microsoft, Microsoft Access crea un archivo con el formato .asp que contiene información acerca de cómo tener acceso y dar formato a los datos del objeto. Microsoft Internet Information Server utiliza el archivo .asp para crear un archivo .html con los datos del objeto Microsoft Access que envía. Puede usar el argumento Archivo de plantilla para especificar un archivo .html para que sea utilizado como plantilla para el archivo .asp.

Las siguientes reglas se aplican cuando se utiliza la acción SalidaHacia para enviar un objeto de base de datos a cualquiera de los formatos de salida, excepto páginas Active Server de Microsoft (algunas de estas reglas se aplican también al formato de páginas Active Server de Microsoft):

•	Se pueden enviar los datos de tablas, consultas y hojas de datos de formularios. En el archivo de salida, todos los campos de la hoja de datos son como si fueran de Microsoft Access, excepto los campos que contengan objetos OLE. Las columnas para estos campos se incluyen en el archivo de salida, pero los campos se dejan en blanco.

•	Para un control dependiente de un campo Sí/No (un botón de alternar, botón de opción o casilla de verificación), el archivo de salida muestra el valor –1 (Sí) o 0 (No).

•	Para un cuadro de texto dependiente de un campo Hipervínculo, el archivo de salida muestra el hipervínculo para todos los formatos de salida, excepto el de texto MS-DOS (en este caso, el hipervínculo se muestra simplemente como texto normal).

•	Si envía datos de un formulario en la vista Formulario, el archivo de salida contiene siempre la vista Hoja de datos del formulario.

•	Si se envían los datos de un informe, los únicos controles que se incluyen en el archivo de salida son los cuadros de texto (para los archivos de salida .xls), o los cuadros de texto y las etiquetas (para los archivos de salida .rtf, .txt y .html). Todos los demás controles se ignoran. La información del encabezado y de pie de página tampoco se incluye en el archivo de salida. La única excepción a esto es que cuando se envían los datos de un informe a un archivo Microsoft Excel, en el archivo de salida se incluye un cuadro de texto en un pie de página de grupo que contiene una expresión con la función Suma. En el archivo de salida no se incluye ningún otro control de un encabezado o pie de página (ni ninguna función agregada que no sea la función Suma).

•	Los subinformes se incluyen en el archivo de salida, pero los subformularios no.

•	Cuando se envía a una hoja de datos o formulario en formato HTML, se crea un archivo .html. Cuando se envía a un informe en formato HTML, se crea un archivo .html por cada página del informe.

Para obtener más información sobre las reglas y restricciones acerca de cuándo enviar a archivos .html, consulte Exportar una hoja de datos a formato HTML estático y Exportar un informe a formato HTML estático.

Para obtener más información sobre las reglas y restricciones acerca de cuándo enviar a archivos de Microsoft Internet Information Server, consulte Exportar una hoja de datos a formato HTML dinámico y Exportar un formulario a formato HTML dinámico.

Para obtener más información sobre las reglas y restricciones acerca de cuando enviar a archivos de páginas Active Server de Microsoft, consulte Exportar una hoja de datos a formato HTML dinámico, Exportar un formulario a formato HTML dinámico, y Controles de formulario compatibles y no compatibles para el formato ASP dinámico.

Sugerencia   Si se envían los datos de un informe a un archivo de salida y las columnas y filas de datos del archivo de salida no están alineados como en el informe, las siguientes sugerencias pueden ser de utilidad:

•	Para ajustar el tamaño de los controles, seleccione Tamaño del menú Formato y haga clic en Ajustar.

•	Evite superponer controles o situarlos demasiado juntos.

•	Para alinear los controles del informe, seleccione Alinear del menú Formato, después haga clic en el comando correspondiente. Los controles que no están alineados en la misma fila puede que se sitúen en filas diferentes del archivo de salida, lo que provoca espacio adicional.

La acción SalidaHacia tiene el mismo efecto que elegir el comando Guardar como o exportar del menú Archivo, seleccionar la opción En un archivo o una base de datos externos y seleccionar la casilla de verificación Guardar con formato en el cuadro de diálogo que se muestra. Los argumentos de la acción se corresponden con los valores del cuadro de diálogo Guardar como o exportar. Sin embargo, el comando Guardar como o exportar sólo se aplica al objeto seleccionado en la ventana Base de datos. Con la acción SalidaHacia puede especificarse el objeto que se desea enviar.

Nota    Con el comando Guardar como o exportar es posible enviar datos seleccionados. Sin embargo, esta funcionalidad no está disponible en la acción SalidaHacia.

Para enviar un objeto de la base de datos también puede seleccionar Vínculos con Office del menú Herramientas, hacer clic en Analizar con MS Excel o Publicar con MS Word y abrir inmediatamente el archivo en Microsoft Excel o Microsoft Word para Windows. También puede hacer clic en Guardar como HTML en el menú Archivo, que ejecuta el Asistente para publicar en el Web, que puede usar para enviar un objeto de base de datos a un archivo .html, a archivos .htx/.idc o a un archivo .asp.

Para ejecutar la acción SalidaHacia en Visual Basic, use el método OutputTo del objeto DoCmd.


Acción EnviarObjeto

La acción EnviarObjeto se utiliza para incluir la hoja de datos, el formulario, informe o módulo determinado de Microsoft Access en un mensaje de correo electrónico, en el que puede examinarse y enviarse. En los mensajes de Microsoft Exchange, de Microsoft Mail, del correo de Microsoft Windows para Trabajo en Grupo y de otras aplicaciones de correo electrónico que admitan la interfaz estándar Microsoft MAPI, puede incluir objetos con los formatos de Microsoft Excel 97 (*.xls), Texto MS-DOS (*.txt), Texto enriquecido (*.rtf) o HTML (*.html).

Si tiene una aplicación de correo electrónico que usa el protocolo Correo independiente del proveedor (VIM) y tiene instalada y configurada la biblioteca de vínculo dinámico (Mapivim.dll) que convierte los mensajes de correo MAPI al protocolo VIM, puede enviar objetos de Microsoft Access a la aplicación de correo VIM.

Valores

La acción EnviarObjeto utiliza los siguientes argumentos.

Argumento de  acción	Descripción
Tipo de objeto	El tipo de objeto a incluir en el mensaje. Haga clic en Tabla (en el caso de una hoja de datos de tabla), Consulta (si es una hoja de datos de una consulta), Formulario (si es un formulario u hoja de datos de un formulario), Informe o Módulo en el cuadro Tipo de objeto en la sección Argumentos de acción de la ventana Macro. No es posible enviar una macro. Si desea enviar el objeto activo, seleccione el tipo con este argumento, pero deje en blanco el cuadro Nombre del objeto.
Nombre del objeto	El nombre del objeto a incluir en el mensaje. El cuadro Nombre del objeto muestra todos los objetos de la base de datos del tipo seleccionado por el argumento Tipo de objeto. Si deja en blanco los argumentos Tipo de objeto y Nombre del objeto, Microsoft Access envía un mensaje a la aplicación de correo sin ningún objeto de base de datos.
	Si ejecuta una macro que contenga la acción EnviarObjeto en una base de datos de biblioteca, Microsoft Access buscará el objeto con este nombre en primer lugar en la base de datos de biblioteca, y luego en la base de datos activa.
Formato de salida	El tipo de formato con el que desea enviar el objeto incluido. Puede seleccionar HTML (*.html), Microsoft Excel (*.xls), Texto MS-DOS (*.txt) o Formato de texto enriquecido (*.rtf) en el cuadro Formato de salida. Los módulos sólo se pueden enviar en texto MS-DOS. Si deja en blanco este argumento, Microsoft Access le preguntará por el tipo de salida.
	Nota   No puede incluir objetos con formato de Página Active Server de Microsoft (*.asp) o Microsoft IIS (*.htx, *.idc), a pesar de que estos formatos aparezcan en la lista.
Para	Destinatarios del mensaje cuyo nombre desee indicar en la línea Para del mensaje. Si deja este argumento en blanco, Microsoft Access le pedirá los nombres de los destinatarios.
	Separe los nombres de destinatarios que especifique en este argumento y en los argumentos Cc y Cco con signos punto y coma (;), o con el separador de lista establecido en la ficha Número del cuadro de diálogo Propiedades de configuración regional del Panel de control de Windows. Si la aplicación de correo no puede identificar los nombres de los destinatarios, el mensaje no es enviado.
Cc	Destinatarios del mensaje cuyos nombres desee indicar en la línea Cc ("carbon copy") del mensaje. Si deja este argumento en blanco, la línea Cc del mensaje quedará en blanco.
Cco	Destinatarios del mensaje cuyos nombres desee indicar en la línea Cco (de Bcc, "blind carbon copy") del mensaje. Si deja este argumento en blanco, la línea Cco del mensaje quedará en blanco.
Asunto	Asunto al que se refiere el mensaje. Este texto aparecerá en la línea Asunto del mensaje. Si deja este argumento en blanco, la línea correspondiente del mensaje quedará en blanco.
Texto del mensaje	Texto que desee incluir en el mensaje, además del objeto de base de datos. Este texto aparecerá en el cuerpo principal del mensaje, después del objeto. Si deja este argumento en blanco, no se incluirá ningún texto adicional. Si ha dejado los argumentos Tipo de objeto y Nombre del objeto en blanco, puede utilizar este argumento para enviar un mensaje sin ningún objeto de base de datos.
Modificar el mensaje	Especifica si el mensaje puede ser modificado o no antes de enviarlo. Si selecciona Sí, la aplicación de correo electrónico se iniciará automáticamente y el mensaje podrá ser editado. Si elige No, el mensaje se enviará sin dar opción a editarlo. El valor predeterminado es No.
Archivo de plantilla	La ruta de acceso y el nombre de archivo de un archivo que desea utilizar como plantilla para un archivo .html. El archivo de plantilla es un archivo que contiene marcas HTML.
Comentarios

La acción EnviarObjeto sólo estará disponible si hay una aplicación de correo electrónico compatible con MAPI instalada en su sistema o si tiene una aplicación de correo electrónico compatible con VIM y ha instalado y configurado Mapivim.dll. Para obtener información acerca de cómo instalar y configurar el soporte Microsoft Access para las aplicaciones VIM, consulte el Kit de recursos de Microsoft Office 97.

El objeto enviado en el mensaje se encuentra en el formato de salida especificado. Al hacer doble clic en el objeto, la aplicación correspondiente se iniciará cargándolo. Las aplicaciones asociadas a cada formato de salida son las siguientes: Microsoft Excel (para los archivos .xls), Microsoft Windows Notepad (para los archivos .txt) y Microsoft Word (para los archivos .rtf). Para los archivos .html, se inicia el explorador Internet predeterminado (tal como Microsoft Internet Explorer).

Al utilizar la acción EnviarObjeto para incluir un objeto de base de datos en un mensaje de correo se aplican las siguientes reglas:

•	Pueden enviarse datos de hojas de datos de tabla, de consulta o de formulario. En el objeto incluido, todos los campos de la hoja de datos tendrán la misma apariencia que tienen en Microsoft Access, excepto los que contengan objetos OLE. Las columnas correspondientes a estos campos se incluyen en el archivo de salida, pero se quedan en blanco.

•	En el caso de un control dependiente de un campo Sí/No (un botón de alternar, botón de opción o casilla de verificación), el archivo de salida mostrará el valor -1(Sí) o 0 (No).

•	Para un cuadro de texto dependiente de un campo Hipervínculo, el archivo de salida muestra el hipervínculo para todos los formatos de salida, excepto el de texto MS-DOS (en este caso, el hipervínculo se muestra simplemente como texto normal).

•	Si se envían los datos de un informe en la vista Formulario, el objeto incluido siempre contiene la vista Hoja de datos del formulario.

•	Si se envían los datos de un informe, los únicos controles que se incluirán en el archivo de salida serán los cuadros de texto (en el caso de los archivos .xls) o los cuadros de texto y las etiquetas (en los tipos de archivos .rtf, .txt, y .html). El resto de los controles se ignoran. Tampoco se incluye la información del encabezado y el pie de página. La única excepción a esto es que, al enviar los datos de un informe a un archivo Microsoft Excel, se incluirá un cuadro de texto de un pie de grupo que contenga una expresión que use la función Suma (Sum). En el objeto no se incluirá ningún otro control del encabezado o pie de página (ni ninguna función agregada que no sea Suma).

•	Los subinformes se incluyen en el archivo de salida, pero los subformularios no.

•	Cuando se envía a una hoja de datos o formulario en formato HTML, se crea un archivo .html. Cuando se envía un informe en formato HTML, se crea un archivo .html por cada página del informe.

Para obtener más información sobre las reglas y restricciones acerca de cuando incluir objetos en el formato de Microsoft ActiveX Server, consulte Exportar una hoja de datos a formato HTML dinámico y Exportar un informe a formato HTML dinámico.

Sugerencia    Si envía los datos de un formulario a un archivo y las columnas y filas de datos no se alinean como en el informe, estos consejos pueden serle de utilidad:

•	Para ajustar el tamaño de los controles, seleccione Tamaño del menú Formato y haga clic en Ajustar.

•	Evite superponer los controles o situarlos demasiado juntos.

•	Para alinear los controles del informe, seleccione Alinear del menú Formato, después haga clic en la opción correspondiente. Los controles que no están alineados en la misma fila puede que se sitúen en filas diferentes en el objeto incluido, provocando espacio adicional.

La acción EnviarObjeto tiene el mismo efecto que elegir el comando Enviar del menú Archivo y los argumentos de la acción se corresponden con los valores del cuadro de diálogo Enviar. Sin embargo, el comando Enviar, sólo se aplica al objeto activo. Si usa la acción EnviarObjeto, puede especificar el objeto que desea enviar.

Nota   Puede enviar los datos seleccionados con el comando Enviar. Sin embargo, esta funcionalidad no está disponible con la acción EnviarObjeto.

Para ejecutar la acción EnviarObjeto desde Visual Basic, use el método SendObject del objeto DoCmd.


Acción MostrarBarraDeHerramientas

La acción MostrarBarraDeHerramientas se utiliza para mostrar u ocultar una barra de herramientas incorporada o personalizada. Es posible mostrar una barra de herramientas incorporada en todas las ventanas de Microsoft Access, o bien sólo en aquellas en las que aparece normalmente (por ejemplo, la barra de herramientas de la vista Formulario).

Nota   La acción MostrarBarraDeHerramientas sólo afecta a las barras de herramientas, no a las barras de menús o a los menús contextuales.

Valores

La acción MostrarBarraDeHerramientas utiliza los siguientes argumentos.

Argumento de  acción	Descripción
Nombre de la barra de herramientas	Nombre de la barra de herramientas que desee mostrar u ocultar. El cuadro Nombre de la barra de herramientas de la sección Argumentos de acción de la ventana Macro muestra todas las barras de herramientas incorporadas en Microsoft Access, seguidas de las personalizadas que haya definido para la base de datos activa. Este argumento es obligatorio.
	Si no está marcada la casilla de verificación Permitir el uso de barras de herramientas incorporadas del cuadro de diálogo Inicio (disponible haciendo clic en Inicio en el menú Herramientas), sólo podrá usar esta acción para mostrar u ocultar barras de herramientas personalizadas.
	Si ejecuta una macro que contenga la acción MostrarBarraDeHerramientas en una base de datos de biblioteca, Microsoft Access buscará la barra de herramientas con este nombre en primer lugar en la base de datos de biblioteca, y luego en la base de datos activa.
Mostrar	Especifica si mostrar u ocultar la barra de herramientas y en qué vistas hacerlo. El valor predeterminado es No (ocultar la barra de herramientas).
	En el caso de las barras de herramientas incorporadas, puede seleccionar Sí para mostrar la barra de herramientas en todas las ventanas de Microsoft Access que se activen, Donde corresponda para que aparezca en donde lo hace habitualmente (es decir, en la forma predeterminada de Microsoft Access) o No para ocultar la barra de herramientas en todas las ventanas de Microsoft Access.
	En cuanto a las barras de herramientas personalizadas puede seleccionar Sí o Donde corresponda para que aparezcan en todas las ventanas de Microsoft Access que se activen, o No para ocultarlas en todas ellas.
Comentarios

Puede usar esta acción en una macro con expresiones condicionales para mostrar u ocultar una o más barras de herramientas si se dan ciertas condiciones.

Si desea mostrar una barra de herramientas determinada en un sólo formulario o informe, establezca la propiedad AlActivar (OnActivate) del formulario o informe al nombre de una macro que contenga la acción MostrarBarraDeHerramientas para mostrar la barra de herramientas. Luego establezca la propiedad AlDesactivar (OnDeactivate) del formulario o informe al nombre de una macro que contenga la acción MostrarBarraDeHerramientas que oculte la barra de herramientas.

La acción MostrarBarraDeHerramientas tiene el mismo efecto que elegir Barras de herramientas en el menú Ver y seleccionar y seleccionar Personalizar, y luego seleccionar o no seleccionar una barra de herramientas determinada en la ficha Barra de herramientas del cuadro de diálogo Personalizar. La acción MostrarBarraDeHerramientas permite especificar si se muestran las barras de herramientas incorporadas en todas las ventanas de Microsoft Access o sólo en la vista en la que muestra habitualmente.

Tampoco será posible mostrar u ocultar las barras de herramientas incorporadas usando esta acción si se establece la propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) a False (0) en Visual Basic, o si se establece la opción Permitir el uso de barras de herramientas incorporadas a False en Visual Basic usando el método SetOption.

Para ejecutar la acción MostrarBarraDeHerramientas en Visual Basic, use el método ShowToolbar del objeto DoCmd.


Acción AbrirMódulo

La acción AbrirMódulo se utiliza para abrir un módulo Visual Basic indicado por el procedimiento especificado. Este puede ser un procedimiento Sub, un procedimiento Function o un procedimiento de evento.

Valores

La acción AbrirMódulo utiliza los siguientes argumentos.

Argumento de acción	Descripción
Nombre del módulo	Nombre del módulo que desee abrir. Deje este argumento en blanco si lo que desea es buscar un procedimiento en todos los módulos estándar de la base de datos y abrir el módulo que lo contenga por ese procedimiento.
	Si ejecuta una macro que contenga la acción AbrirMódulo en una base de datos de biblioteca, Microsoft Access buscará el módulo con este nombre en primer lugar en la base de datos de biblioteca, y luego en la base de datos activa.
Nombre del procedimiento	Nombre del procedimiento por el que desea abrir el módulo. Si deja este argumento en blanco, el módulo se abrirá por la sección Declaraciones.
Nota   Es obligatorio introducir un nombre válido en al menos uno de los argumentos Nombre del módulo y Nombre del procedimiento.

Comentarios

Puede utilizar esta acción para abrir un procedimiento de evento especificando el nombre del procedimiento en el argumento Nombre de procedimiento. Por ejemplo, para abrir el procedimiento de evento HacerClic del botón ImprimirFactura del formulario Pedidos, establezca el argumento Nombre del módulo a Formulario.Pedidos y el argumento Nombre del procedimiento a ImprimirFactura_Click. Para ver un procedimiento de evento de un formulario o informe, éste debe estar abierto.

De forma similar, para abrir un procedimiento en un módulo de clase, debe especificar el nombre de módulo, aunque el módulo de clase no tiene que estar abierto.

Para abrir un procedimiento privado, el módulo que lo contiene debe estar abierto.

Esta acción tiene el mismo efecto que seleccionar un módulo en la ventana Base de datos y luego presionar el botón Diseño. Esta acción también permite especificar un nombre de procedimiento y buscar procedimientos en un módulo estándar.

Sugerencia   Puede seleccionar un módulo en la ventana Base de datos y arrastrarlo a una fila de acción de una macro. De esta forma se crea automáticamente una acción AbrirMódulo que abre el módulo en la sección Declaraciones.

Para ejecutar la acción AbrirMódulo desde Visual Basic, use el método OpenModule del objeto DoCmd.


Acción Guardar

Se puede utilizar la acción Guardar para guardar o bien un objeto Microsoft Access o bien, si no se especifica ninguno, el objeto activo. También se puede guardar el objeto activo con un nombre nuevo en algunos casos (funciona igual que el comando Guardar como del menú Archivo).

Valores

La acción Guardar tiene los siguientes argumentos:

Argumento de acción	Descripción
Tipo objeto	El tipo de objeto que desea guardar. Haga clic en Tabla, Consulta, Formulario, Informe, Macro o Módulo en el cuadro Tipo de objeto de la sección Argumentos de acción de la ventana Macro. Para seleccionar el objeto activo, deje en blanco este argumento. Si selecciona un tipo de objeto en este argumento, debe seleccionar en el argumento Nombre del objeto un nombre de objeto que ya exista.
Nombre objeto	El nombre del objeto a ser guardado. El cuadro Nombre del objeto muestra todos los objetos en la base de datos del tipo seleccionado por el argumento Tipo de objeto. Si se deja en blanco el argumento Tipo de objeto, se puede dejar en blanco este argumento para guardar el objeto activo o, en algunos casos, se puede introducir un nombre nuevo en este argumento para guardar el objeto activo con este nombre. Si introduce un nombre nuevo, el nombre debe seguir las convenciones estándar de nombres para los objetos Microsoft Access.
Comentarios

La acción Guardar funciona con todos los objetos de base de datos que el usuario puede abrir y guardar de forma explícita. El objeto especificado debe estar abierto para que la acción Guardar tenga algún efecto en el objeto. Esta acción tiene el mismo efecto que seleccionar un objeto y luego guardarlo haciendo clic en Guardar en el menú Archivo o que hacer clic en Guardar  [image]  en la barra de herramientas. Si se deja en blanco el argumento Tipo de objeto y se introduce un nombre nuevo en el argumento Nombre del objeto, se consigue el mismo efecto que haciendo clic en Guardar como/Exportar en el menú Archivo e introducir un nombre nuevo para el objeto activo. La utilización de la acción Guardar permite especificar un objeto que se desee guardar y ejecutar un comando Guardar desde una macro.

Nota   No puede utilizar la acción Guardar para guardar con un nombre nuevo algo de lo siguiente:

•	Un formulario en la vista Formulario o en la vista Hoja de datos.

•	Un informe en Vista preliminar.

•	Un módulo.

La acción Guardar , tanto si es ejecutada en una macro ejecutada en la base de datos activa, como en una base de datos de bibliotecas, guarda siempre el objeto especificado o el objeto activo en la base de datos en la que el objeto fue creado.

Si se guarda el objeto activo con un nombre nuevo, pero el nombre es el mismo que el nombre de un objeto existente de este tipo, un cuadro de diálogo le preguntará si desea sobrescribir el objeto existente. Si se hubiera establecido a No el argumento Activar advertencias de la acción EstablecerAdvertencias, no se presentaría el cuadro de diálogo, con lo que el objeto antiguo es sobrescrito automáticamente.

Para ejecutar la acción Guardar en Visual Basic, utilice el método Save del objeto DoCmd.


Acción EstablecerElementoDelMenú

Se puede utilizar la acción EstablecerElementoDelMenú para establecer el estado de los elementos del menú (activado o desactivado, verificado o no verificado) en la barra de menú personalizada o en la barra de menú general de la ventana activa.

Nota   La acción EstablecerElementoDelMenú sólo trabaja con barras de menús personalizadas y barras de menú generales creadas utilizando macros de barras de menú. La acción EstablecerElementoDelMenú está incluida en esta versión de Microsoft Access sólo a efectos de compatibilidad con versiones anteriores. No funciona con la funcionalidad de las barras de comandos nuevas . Sin embargo, puede utilizar las propiedades Enabled y State en Visual Basic para desactivar o activar y comprobar o no los elementos de las nuevas barras de menú, barras de herramientas, y menús contextuales.

Valores

La acción EstablecerElementoDelMenú tiene los siguientes argumentos:

Argumento de acción	Descripción
Índice del menú	El índice del menú que contiene el comando para el que desea establecer su estado. En la barra de menú personalizada o barra de menú general de la ventana activa, introduzca un valor Entero, comenzando desde 0, para el índice del menú deseado. Introduzca el valor del índice en el cuadro Índice del menú en la sección Argumentos de acción de la ventana Macro.El índice es relativo a la posición del menú en la macro de la barra de menú para la barra de menú personalizada o barra de menú general (la posición de la acción AgregarMenú de este menú en la macro de la barra de menú, contando desde 0). La presentación de la barra de menú puede ser algo diferente, puesto que se pueden utilizar expresiones condicionales en la macro de la barra de menú para ocultar o mostrar los elementos del menú personalizado. Este es un argumento obligatorio. Si se selecciona un menú con este argumento y se dejan en blanco los argumentos Índice de comandos e Índice de subcomandos, entonces se puede activar o desactivar el propio nombre del menú. No se puede, no obstante, comprobar o no comprobar el nombre de un menú (Microsoft Access ignora los valores Comprobar y No comprobar del argumento Indicador para los nombres de los menús).
Índice de comandos	El índice del comando para el que desea establecer el estado. Introduzca un valor Entero, comenzando desde 0, para el índice del comando deseado en el menú seleccionado por el argumento Índice del menú. El índice es relativo a la posición del comando en el grupo de macros que define el menú seleccionado para la barra de menú personalizada o barra de menú general (la posición de la macro de este comando en el grupo de macros, contando desde 0). La presentación del menú puede que sea algo diferente, puesto que se pueden utilizar expresiones condicionales en el grupo de macros del menú para ocultar o mostrar comandos de menú personalizados.
Índice de subcomandos	El índice del subcomando para el que desea establecer el estado. Esto sólo es de aplicación si el comando deseado tiene un submenú. En el submenú seleccionado por el argumento Índice de comandos, introduzca un valor Entero, comenzando desde 0, para el índice del subcomando deseado. El índice es relativo a la posición del subcomando en el grupo de macros que define al submenú seleccionado para la barra de menú personalizada o barra de menú general (la posición de la macro de este subcomando en el grupo de macros, contando desde 0).
Indicador	El estado al que desea establecer el comando o subcomando. Haga clic en Gris (para desactivar el comando de forma que aparezca atenuado), No Gris (para activarlo), Comprobar (para colocar una marca de verificación por el comando indicando normalmente que ha sido seleccionado o alternado) o No verificado (para eliminar la marca de verificación). El valor predeterminado es No Gris.
Comentarios

La acción EstablecerElementoDelMenú sólo funciona en una barra de menú personalizada o barra de menú general de la ventana activa. En las barras de menús incorporadas de Microsoft Access no funciona, de forma que si la ventana activa no tiene una barra de menú personalizada o barra de menú general, la ejecución de una macro que contenga la acción EstablecerElementoDelMenú causará un error en tiempo de ejecución. Observe que una barra de menú general, si es que se ha definido alguna, substituye a la barra incorporada para todas las ventanas Microsoft Accesss, excepto donde se haya agregado una barra de menú personalizada para un formulario o informe.

Se puede utilizar esta acción para establecer el estado de los comandos y subcomandos de menú, aunque no el de los subcomandos de los subcomandos..

Para ejecutar la acción EstablecerElementoDelMenú en Visual Basic, utilice el método SetMenuItem del objeto DoCmd.


Acción EjecutarComando

La acción EjecutarComando se utiliza para ejecutar un comando incorporado de Microsoft Access. El comando puede aparecer en una barra de menús, barra de herramientas o menú contextual de Microsoft Access.

Valores

La acción EjecutarComando utiliza el siguiente argumento.

Argumento de acción	Descripción
Comando	El nombre del comando que desee ejecutar. El cuadro Comando muestra los comandos incorporados disponibles en Microsoft Access, en orden alfabético. Este argumento es obligatorio.
Comentarios

En Microsoft Access 97, la acción EjecutarComando reemplaza a la acción EjecutarElementoMenú. Cuando se abre y guarda una macro de una versión previa de Microsoft Access que contiene una acción EjecutarElementoMenú, la acción y sus argumentos de acción se convierten de forma automática a la acción equivalente EjecutarComando. La acción EjecutarElementoMenú ya no aparece en la lista de acciones de la ventana Macro de Microsoft Access 97.

Puede usar la acción EjecutarComando para ejecutar un comando de Microsoft Access desde una barra de menús, una barra de menús global, un menú contextual personalizado, o un menú contextual global. Sin embargo, para agregar comandos de Microsoft Access a los menús personalizados y los menús contextuales, normalmente es más fácil usar el cuadro de diálogo Personalizar, disponible apuntando a Barras de herramientas en el menú Ver y haciendo clic en Personalizar. La ficha Comandos en el cuadro de diálogo Personalizar enumera los comandos incorporados de Microsoft Access que aparecen en las barras de herramientas y menús de Microsoft Access.

La acción EjecutarComando se puede utilizar en una macro con expresiones condicionales para ejecutar un comando dependiendo de ciertas condiciones.

Nota   El menú Archivo de Microsoft Access 97 muestra las bases de datos utilizadas más recientemente. Puede hacer clic en una de estas bases de datos en lugar de elegir Abrir base de datos. Estas bases de datos no aparecen en el cuadro de lista desplegable del argumento Comando, y no están disponibles utilizando la acción EjecutarComando en una macro.

Cuando se convierte una base de datos desde una versión anterior de Microsoft Access, algunos comandos puede que ya no estén disponibles. Puede que a un comando se le haya cambiado el nombre, haya sido movido a un menú distinto, o puede que ya no esté disponible en Microsoft Access 97. Las acciones EjecutarElementoMenú para tales comandos pueden ser convertidas a acciones EjecutarComando. Cuando se abre la macro, Microsoft Access mostrará una acción EjecutarComando con un argumento Comando en blanco para tales comandos. Debe modificar la macro e introducir un argumento de comando válido, o eliminar la acción EjecutarComando. Para obtener una lista de comandos de las versiones anteriores de Microsoft Access que no estén disponibles en Microsoft Access 97, consulte Comandos de la acción EjecutarElementoMenú no disponibles con la acción EjecutarComando.

Para ejecutar la acción EjecutarComando en Visual Basic, utilice el método RunCommand del objeto Application. (Esto es equivalente al método DoCommand del objeto DoCmd).


Comandos de la acción EjecutarElementoMenú no disponibles con la acción EjecutarComando

Cuando convierte una base de datos de Microsoft Access desde una versión previa de Microsoft Access, algunos comandos puede que ya no estén disponibles. Puede que a un comando se le haya cambiado el nombre, que haya sido cambiado a un menú distinto, o puede que ya no esté disponible en Microsoft Access 97. Las acciones EjecutarElementoMenú para tales comandos no pueden ser convertidas a acciones EjecutarComando.

Todos los comandos disponibles cuando utilizaba la acción EjecutarElementoMenú en Microsoft Access 95 están disponibles utilizando la acción EjecutarComando en Microsoft Access 97.

Los siguientes comandos de menús estaban disponibles cuando se utilizaba la acción EjecutarElementoMenú o el método DoMenuItem en Microsoft Access 2.0, pero no están disponibles utilizando la acción EjecutarComando o el método RunCommand en Microsoft Access 97.

Vista	Nombre de menú	Comando de menú	Use en su lugar
Base de datos, Diseño de tabla, Diseño de consulta, Diseño de macro, Relaciones del sistema	Archivo	Imprimir definición	Comando no disponible. Use el Documentador, disponible apuntando a Analizar en el menú Herramientas y haciendo clic en Documentador, para ver la información acerca todos estos objetos de bases de datos. También puede hacer clic en Vista preliminar en el menú Archivo cuando se abre o selecciona una macro en la ventana Base de datos para ver información acerca de la macro.
Base de datos	Seguridad	Imprimir seguridad	Comando no disponible. Puede examinar y establecer la información de seguridad para la base de datos utilizando los subcomandos del comando Seguridad en el menú Herramientas. El cuadro de diálogo Cuentas de usuario y grupo, disponible apuntando a Seguridad en el menú Herramientas y haciendo clic en Cuentas de usuario y grupo, tiene un botón Imprimir usuarios y grupos que puede utilizar para imprimir información de seguridad.
Base de datos	Archivo	Configurar Imp/Exp	Comando no disponible. Use el Asistente para importar texto, el Asistente para vincular texto, o el Asistente para exportar texto, disponible haciendo clic en Obtener datos externos o Guardar como o exportar en el menú Archivo, para crear especificaciones de importación/exportación para los archivos de texto.
Diseño de consulta	Consulta	Combinar tablas	Comando no disponible.
Vista Formulario	Registros	Permitir modificaciones	Comando no disponible. Utilice las propiedades PermitirEdiciones (AllowEdits), PermitirAgregar (AllowAdditions), PermitirEliminación (AllowDeletions), y EntradaDedatos (DataEntry).
Diseño de Formulario/Informe	Ver	Paleta	Comando no disponible. Use uno de los botones de la paleta en la barra de herramientas de Formato, tal como Color de fondo o de relleno, Color de fuente o de primer plano, o Color de borde o de línea.
Diseño del módulo	Ejecutar	Modificar comando$	Comando no disponible. Utilice el cuadro Argumentos de la línea de comandos en la ficha Avanzadas del cuadro de diálogo Opciones, disponible haciendo clic en Opciones en el menú Herramientas.
Nota   En la versión 2.0 de Microsoft Access, se podía utilizar la acción EjecutarElementoMenú en el grupo de macros que definen los comandos para una barra de menús personalizada para agregar el comando Complementos al menú Archivo en la barra de menús personalizada. Microsoft Access agregó los elementos de submenú apropiados a este elemento de menú. De forma parecida, en Microsoft Access 95, se podía utilizar la acción EjecutarElementoMenú para agregar el comando Complementos al menú Herramientas de una barra de menús personalizada, y Microsoft Access agregó los elementos de submenús por usted. En ninguna  de estas versiones se podía ejecutar el comando Complementos directamente usando la acción EjecutarElementoMenú. En Microsoft Access 97, puede arrastrar el comando Complementos desde el menú Herramientas de la barra de menús a cualquier barra de herramientas que desee mientras el cuadro de diálogo Personalizar esté abierto. No hay valor de la acción EjecutarComando que se corresponda con el comando Complementos.


Utilización de las constantes enumeradas en Microsoft Access 97

En Microsoft Access 97, se han agregado o cambiado un número de constantes intrínsecas. Esto se ha hecho para crear listas de constantes "enumeradas" que se muestran en la lista Miembros de lista automáticos de la ventana Módulo para que sirvan de argumentos de varios de los métodos, funciones y propiedades de Microsoft Access o como valores de varias propiedades de Microsoft Access. Puede seleccionar la constante apropiada de la lista en la ventana Módulo, en lugar de tener que recordar la constante o buscarla en el tema de Ayuda.

La siguiente información se aplica a las constantes enumeradas:

•	El conjunto de constantes enumeradas de cada método, función, o argumento de propiedad tiene un nombre, que se muestra en la línea de sintaxis del método, función, o propiedad en la ventana Módulo cuando se ha seleccionado la opción Información rápida automática en la ficha Módulo del cuadro de diálogo Opciones, disponible al hacer clic en Opciones en el menú Herramientas. (En el caso de los valores de la propiedad, no se muestra el nombre, simplemente la lista de constantes). Por ejemplo, la línea de sintaxis para el método OpenForm del objeto DoCmd muestra [View as AcFormView = acNormal] para el argumento vista de este método. AcFormView es el nombre de este conjunto de constantes enumeradas, y acNormal es el valor predeterminado para el argumento. El Examinador de objetos enumera también los nombres de los conjuntos de constantes enumeradas en el cuadro Clases y enumera las constantes intrínsecas contenidas en cada uno de estos conjuntos en el cuadro Miembros.

•	En el caso de los nombres de constantes que hayan cambiado, las constantes antiguas seguirán funcionando. Por ejemplo, una de las constantes intrínsecas para el argumento guardar del método Close del objeto DoCmd era acPrompt. Ahora es acSavePrompt, pero acPrompt todavía funciona.

•	En un número determinado de casos de las versiones previas de Microsoft Access, podía dejar el valor de un argumento en blanco, y Microsoft Access realizaría la acción predeterminada para ese argumento. Por ejemplo, podía dejar en blanco los argumentos tipodeobjeto (y nombreobjeto) del método Close, y Microsoft Access cerraría la ventana activa. Para los nuevos conjuntos de constantes enumeradas, el valor en blanco ha sido reemplazado con una nueva constante predeterminada. Por ejemplo, el argumento tipodeobjeto del método Close tiene ahora una nueva constante predeterminada, acDefault. Establecer este argumento a la nueva constante tiene el mismo efecto que dejar el argumento en blanco. Además, puede seguir dejando el argumento en blanco, y Microsoft Access asumirá la nueva constante predeterminada.

•	Hay una excepción a esto. Si ejecuta código de Visual Basic de las versiones previas de Visual Basic en Microsoft Access usando Automatización, los argumentos en blanco provocarán un error en aquellos argumentos que tengan las nuevas constantes predeterminadas. Este problema no se produce en el caso del código antiguo de Visual Basic para aplicaciones o el código de Visual Basic que se ejecuta directamente en Microsoft Access.

La siguiente tabla muestra todas las constantes intrínsecas que se han agregado o cambiado con el fin de crear listas de constantes enumeradas en Microsoft Access 97.

Elemento del lenguaje	Argumento	Constante antigua	Constante nueva
método Close	guardar	acPrompt	acSavePrompt
método Close	tipodeobjeto	(ninguna)	acDefault
método CopyObject	tipoobjetoorigen	(ninguna)	acDefault
método DeleteObject	tipodeobjeto	(ninguna)	acDefault
método GoToRecord	tipodeobjeto	acTable	acDataTable
método GoToRecord	tipodeobjeto	acQuery	acDataQuery
método GoToRecord	tipodeobjeto	acForm	acDataForm
método GoToRecord	tipodeobjeto	(ninguna)	acActiveDataObject
método OpenForm	mododedatos	acAdd	acFormAdd
método OpenForm	mododedatos	acEdit	acFormEdit
método OpenForm	mododedatos	acReadOnly	acFormReadOnly
método OpenForm	mododedatos	(ninguna)	acFormPropertySettings
método OpenForm	mododelaventana	acNormal	acWindowNormal
método OpenQuery	vista	acNormal	acViewNormal
método OpenQuery	vista	acDesign	acViewDesign
método OpenQuery	vista	acPreview	acViewPreview
método OpenReport	vista	acNormal	acViewNormal
método OpenReport	vista	acDesign	acViewDesign
método OpenReport	vista	acPreview	acViewPreview
método OpenTable	vista	acNormal	acViewNormal
método OpenTable	vista	acDesign	acViewDesign
método OpenTable	vista	acPreview	acViewPreview
método OutputTo	tipodeobjeto	acTable	acOutputTable
método OutputTo	tipodeobjeto	acQuery	acOutputQuery
método OutputTo	tipodeobjeto	acForm	acOutputForm
método OutputTo	tipodeobjeto	acReport	acOutputReport
método OutputTo	tipodeobjeto	acModule	acOutputModule
método Quit  (objeto DoCmd)	opciones	acPrompt	acQuitPrompt
método Quit  (objeto DoCmd)	opciones	acSaveYes o acSave	acQuitSaveAll
método Quit  (objeto DoCmd)	opciones	acSaveNo o acExit	acQuitSaveNone
método Quit  (objeto Application)	opciones	acPrompt	acQuitPrompt
método Quit  (objeto Application)	opciones	acSaveYes o acSave	acQuitSaveAll
método Quit  (objeto Application)	opciones	acExit	acQuitSaveNone
método Rename	tipodeobjeto	(ninguna)	acDefault
método RepaintObject	tipodeobjeto	(ninguna)	acDefault
método Save	tipodeobjeto	(ninguna)	acDefault
método SendObject	tipodeobjeto	acTable	acSendTable
método SendObject	tipodeobjeto	acQuery	acSendQuery
método SendObject	tipodeobjeto	acForm	acSendForm
método SendObject	tipodeobjeto	acReport	acSendReport
método SendObject	tipodeobjeto	acModule	acSendModule
método SendObject	tipodeobjeto	(ninguna)	acSendNoObject
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeExcel3
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeExcel4
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeExcel5
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeExcel7
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeExcel97
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeLotusWK1
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeLotusWK3
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeLotusWJ2 — sólo en versión Japonesa
método TransferSpreadsheet	tipohojacálculo	(ninguna)	acSpreadsheetTypeLotusWK4
método TransferText	tipotransferencia	(ninguna)	acImportHTML
método TransferText	tipotransferencia	(ninguna)	acExportHTML
método TransferText	tipotransferencia	(ninguna)	acLinkHTML
función HyperlinkPart	parte	(ninguna)	acAddress
función HyperlinkPart	parte	(ninguna)	acDisplayedValue
función HyperlinkPart	parte	(ninguna)	acDisplayName
función HyperlinkPart	parte	(ninguna)	acSubAddress
propiedad Type	[valor]	(ninguna)	acClassModule
propiedad Type	[valor]	(ninguna)	acStandardModule


Métodos y propiedades personalizados

Puede usar un módulo de clase para crear una definición para un nuevo objeto personalizado. Cuando se crea una nueva instancia de una clase, se crea un nuevo objeto y se devuelve una referencia al mismo.

Todos los procedimientos públicos definidos dentro del módulo de clase se convierten en métodos del nuevo objeto. La instrucción Sub define un método que no devuelve un valor; la instrucción Function define un método que puede devolver un valor de un tipo determinado.

Todos los procedimientos Property Let, Property Get o Property Set que defina se convierten en propiedades del nuevo objeto. Los procedimientos Property Get recuperan el valor de una propiedad. Los procedimientos Property Let establecen el valor de una propiedad de no objeto. Los procedimientos Property Set establecen el valor de una propiedad de objeto.

Por ejemplo, puede usar un módulo de clase para crear un nivel de interfaz entre la aplicación y un conjunto de funciones interfaz de programación de aplicaciones (API) de Windows a las que llama. Para hacerlo, cree un conjunto de procedimientos simples que llaman a procedimientos más complicados en una DLL. Cuando cree una instancia de esta clase, los procedimientos que ha creado se convierten en métodos del nuevo objeto. Puede aplicar estos métodos como lo haría con los métodos de cualquier objeto, y al hacerlo llama también a las funciones API.


Mejoras en el rendimiento del motor de base de datos Microsoft Jet

La versión 3.5 del motor de base de datos Microsoft Jet incluye las siguientes mejoras sobre la versión 3.0 del motor de base de datos Jet contenido en Microsoft Access 95:

•	Un nuevo valor del registro, MaxLocksPerFile, permite acelerar la finalización de consultas grandes en servidores basados en NetWare y en Windows NT al forzar la confirmación parcial de una transacción. Use el método SetOption de DAO para suministrar un nuevo valor para este valor. El método SetOption permite anular ciertos valores del registro en tiempo de ejecución con el fin de ajustar la aplicación a entornos determinados.

•	Las columnas indexadas presentan mejor concurrencia multiusuario, lo que significa que más usuarios pueden leer y actualizar las columnas indexadas sin obtener mensajes de conflicto de bloqueos.

•	Las consultas grandes se ejecutan más rápidamente, debido a la mejora en el comportamiento de las transacciones de las instrucciones SQL del lenguaje de manipulación de datos (DML) y a los nuevos valores del registro que fuerzan la confirmación de las transacciones cuando se alcanza un cierto nivel de bloqueo.

•	Las consultas que contienen el operador no igual (<>) en sus instrucciones de criterios son mucho más rápidas.

•	Las lecturas secuenciales pueden ser más rápidas, ya que el motor de base de datos Jet puede preasignar ahora hasta 64 kilobytes de espacio en disco a la vez.

•	Las consultas temporales se ejecutan más rápidamente.

•	La eliminación de una tabla es más rápida cuando se usa la instrucción DROP de SQL o la instrucción DELETE de SQL sin predicado.

La versión 3.5 del motor de base de datos Jet incluye las siguientes mejoras sobre la versión de Microsoft Jet incluida en las versiones 1.x y 2.0 de Microsoft Access.

•	La estructura de índices reduce la cantidad de espacio de almacenamiento requerido para los índices, y reduce la cantidad de tiempo requerido para crear índices complejos. Cuando se compacta una base de datos, sus índices se optimizan para un mejor rendimiento. Es necesario que compacte la base de datos de forma regular para mantener esta optimización.

•	Las páginas indexadas ya no contienen bloqueos de lectura. Como resultado, el rendimiento se mejora cuando varios usuarios están trabajando con los mismos datos al mismo tiempo en una base de datos multiusuario.

•	Las operaciones que incluyen la instrucción DELETE se ejecutan más rápidamente. Partes de una página pueden ser eliminadas todas al mismo tiempo, en lugar de fila a fila.

•	El mecanismo de asignación de páginas del motor de base de datos Jet ha sido mejorado para incrementar la probabilidad de que los datos de la misma página se almacenen en páginas adyacentes. Como resultado, la capacidad de lectura previa del motor de base de datos Jet se ha mejorado.

•	El motor de base de datos Jet es multiproceso. De forma predeterminada, un proceso realiza operaciones de lectura previa, otro realiza operaciones de escritura posterior y otro realiza mantenimiento del caché.

•	Las transacciones implícitas se han incluido en el motor de base de datos Jet, de forma que puede obtener ventaja de la velocidad mejorada proporcionada por las transacciones, sin usar los métodos BeginTrans y CommitTrans en el código. Para retener todo el control cuando los datos se escriben al disco, debe generar transacciones explícitas usando los métodos BeginTrans y CommitTrans.

•	El motor de base de datos Jet contiene un mecanismo de ordenación para mejorar el rendimiento de ordenación.

•	El motor de base de datos Jet incluye una memoria caché configurada dinámicamente que se asigna en el inicio, basado en la memoria disponible del sistema. La memoria caché contiene los datos usados más recientemente para mejorar el rendimiento.

•	El motor de base de datos Jet proporciona compatibilidad ISAM para los archivos HTML, para las versiones 5.0, 7.0, y 8.0 de Microsoft Excel, así como archivos de texto, hojas de cálculo Lotus 1-2-3 versión 3.0, Paradox 5.x, dBASE 5 y FoxPro 3.0.

Para obtener más información acerca del acceso a bases de datos externas, consulte el capítulo 18, "Acceso a datos externos", en Creación de aplicaciones con Microsoft Access 97.


Lo nuevo para los programadores en la ventana Módulo

Nuevo en Microsoft Access 97

La ficha Avanzadas del cuadro de diálogo Opciones (disponible al hacer clic en Opciones del menú Herramientas) incluye un nuevo grupo de opciones, Interceptar errores. Este grupo contiene dos nuevas opciones, Modo de interrupción en módulo de clase y Modo de interrupción en errores no tratados. La opción Modo de interrupción en todos los errores, que estaba en la ficha Módulos del cuadro de diálogo Opciones en Microsoft Access 95, se incluye ahora con las dos nuevas opciones en el grupo de opciones Interceptar errores.

Estas opciones determinan la forma en que Visual Basic entra en modo de interrupción cuando se produce un error en su código. Estas opciones afectan al comportamiento de Visual Basic de la siguiente manera:

•	Modo de interrupción en todos los errores: Visual Basic se interrumpe en todos los errores tratados y no tratados tanto en los módulos estándar como en los módulos de clase. El módulo que contiene el procedimiento que causó el error está activo, y la línea de código que causó el error aparece resaltada. Puede presionar ALT+F8 o ALT+F5 para ejecutar o ignorar el error.

•	Modo de interrupción en módulo de clase: Visual Basic se interrumpe en todos los errores no tratados en módulos de clase, así como en los errores no tratados dentro de módulos estándar. Cuando se produce un error dentro de un procedimiento en un módulo de clase, módulo de clase está activo, y la línea de código que causó el error aparece resaltada. Puede presionar ALT+F8 o ALT+F5 para ejecutar o ignorar el error. Use esta opción para para depurar código en módulos de clase.

•	Modo de interrupción en errores no tratados: Visual Basic se interrumpe en todos los errores no tratados en módulos estándar. Si se produce un error dentro de un procedimiento en un módulo de clase, Visual Basic se interrumpe en la línea de código que llamó al procedimiento en el módulo de clase. Con esta opción, nunca entra en modo de interrupción dentro del módulo de clase.

Puede establecer estas opciones desde el código usando el método SetOption, y puede devolver sus valores usando el método GetOption.

El nuevo menú Depurar contiene dos nuevos comandos, así como varios comandos que existían en el menú Ejecutar o en el menú Herramientas en Microsoft Access 95. El menú Depurar sólo está disponible mientras esté en el módulo vista Diseño.

•	El comando Compilar y guardar todos los módulos compila todos los módulos del proyecto y los guarda en su estado compilado.

•	El comando Paso a paso para salir ejecuta todo el código de los procedimientos anidados, empezando con el procedimiento en el que se usó el comando. Luego devuelve la ejecución al procedimiento que llamó al procedimiento desde el que se utilizó el comando. Por ejemplo, suponga que tiene los procedimientos anidados A hasta E, siendo A el primer procedimiento en el árbol de llamadas. Si usa el comando Paso a paso para salir desde B, B llama a C, que llama a D, que llama a E. B se ejecuta completamente y la ejecución vuelve a A. Este comando es útil cuando ha ido paso a paso dentro de un procedimiento y entonces decide que no desea seguir paso a paso el resto del procedimiento.

Microsoft Access 97 incluye también varias opciones nuevas para escribir código en la ventana Módulo, algunas de las cuales se describen en los siguientes párrafos. Para establecer estas opciones, haga clic en Opciones en el menú Herramientas, y luego elija la ficha Módulo.

•	La opción Lista de miembros automática proporciona una lista de objetos, propiedades y métodos relevantes mientras está codificando. Cuando escribe el nombre de un objeto, Microsoft Access ayudar automáticamente a completar la instrucción mostrando una lista de objetos, propiedades o métodos que podrían seguir al nombre del objeto. Para completar la instrucción que está escribiendo, puede hacer clic en un elemento de la lista o continuar escribiendo el código. Si continúa escribiendo el código, la lista presenta el término más cercano a lo que haya escrito. Si desea introducir el elemento seleccionado en la lista, presione CTRL+ENTRAR o TAB. Para introducir el elemento seleccionado y mover el cursor a la siguiente línea, presione ENTRAR. Para cerrar la lista, presione ESC.

•	La opción Información rápida automática ofrece información sintáctica mientras está escribiendo en la ventana Módulo. Cuando escribe un nombre de procedimiento o de método seguido de un espacio o abrir paréntesis, aparece automáticamente una sugerencia bajo la línea de código que está escribiendo. La sugerencia da información sintáctica acerca del procedimiento, incluyendo qué argumentos necesita usar.

•	La opción Sugerencias de datos automáticas ofrece el valor de una variable o una expresión mientras el código está en el modo de interrupción. Seleccione la variable o expresión que desea comprobar, y coloque el mouse sobre la misma para mostrar su valor actual.

Nuevo en Microsoft Access 95

La ventana Módulo es compatible con la sintaxis de códigos de colores totalmente personalizables, así como opciones de formato de texto que puede establecer en la ficha Módulo del cuadro de diálogo Opciones, disponible al elegir Opciones en el menú Herramientas. La ventana Módulo admite también un carácter de continuación de línea, que permite continuar una línea de código después de una interrupción de línea. El carácter de continuación de línea consta de un espacio seguido de un carácter de subrayado (_), como en el siguiente ejemplo:

MsgBox "Está a punto de eliminar 10 registros..." _

& "¿Desea continuar?"

Es posible establecer una amplia variedad de opciones de entorno desde la ficha Módulo del cuadro de diálogo Opciones. Puede ver un módulo completo activando la casilla de verificación Ver módulo completo, o puede desactivar esta casilla para ver simplemente un procedimiento a la vez. (Haciendo clic en los botones de la esquina inferior izquierda de la ventana Módulo alterna también esta opción.) También puede establecer otras opciones del código, como Modo de interrupción en todos los errores y Declaración de variable requerida. Los argumentos de la línea de comandos y los argumentos de la compilación condicional se establecen en la ficha Avanzadas del cuadro de diálogo Opciones.

Para obtener más información acerca de un elemento determinado del cuadro de diálogo Opciones, haga clic en el signo de interrogación [image]  en la esquina superior derecha del cuadro de diálogo, y luego haga clic en el elemento.

Varias características de la ventana Módulo están disponibles para ayudar en la depuración del código. El cuadro de diálogo Inspección rápida proporciona el valor inmediato de una variable o expresión seleccionada. Seleccione una variable o expresión y presione SHIFT+F9, o elija Inspección rápida en el menú Depurar.

Los comandos Establecer instrucción siguiente y Mostrar la instrucción siguiente están disponibles en el menú Depurar cuando se haya detenido el código. El comando Establecer instrucción siguiente permite trasladar el punto de ejecución a otra instrucción, saltándose de manera efectiva partes del código, o volver atrás y ejecutar de nuevo ciertas instrucciones. El comando Mostrar la instrucción siguiente muestra la siguiente instrucción a ser ejecutada en el código actualmente en ejecución.

El entorno de programación ofrece los botones Terminar, Restablecer e Iniciar o continuar, así como los comandos correspondientes del menú Ejecutar. Cuando finaliza la ejecución del código haciendo clic en Terminar  [image]  en la barra de herramientas o haciendo clic en el botón Terminar en el cuadro de diálogo para un error en tiempo de ejecución, las variables a nivel de módulo conservan su valor. Para restablecer las variables a nivel de módulo, haga clic en Restablecer  [image]  en la barra de herramientas.


Lo nuevo para los programadores en el Examinador de objetos

El Examinador de objetos es una herramienta que permite ver los miembros de una biblioteca de tipos de un componente ActiveX. Para ver el Examinador de objetos, abra un módulo y elija Examinador de objetos  [image]  en la barra de herramientas, o haga clic en Examinador de objetos en el menú Ver. También puede abrir el Examinador de objetos presionando F2 mientras se encuentra en el módulo vista Diseño.

La información de una biblioteca de tipos consiste en definiciones de objetos y sus propiedades, métodos, eventos y constantes, así como las funciones e instrucciones relacionadas. Esta información está organizada en módulos de clases y en módulos estándar. Loa módulos de clases y los módulos estándar se enumeran en el cuadro Clases. Puede ver los métodos, propiedades, eventos y constantes relacionadas en el cuadro Miembros de.

El Examinador de objetos de Microsoft Access 97 incluye las siguientes características nuevas:

•	Un elemento especial <globales> aparece como la primera entrada del cuadro Clases. Esta es la entrada de nivel superior de cada biblioteca del Examinador de objetos. Cuando se selecciona <globales> en el cuadro Clases, el cuadro Miembros de presenta todos los miembros a los que tiene acceso globalmente, incluyendo todas las constantes.

•	Puede buscar en una biblioteca de tipos a la que se hace referencia, cualquier clase o miembro, escribiendo el término a buscar en el cuadro Buscar texto y luego eligiendo Buscar  [image]  en la barra de herramientas del Examinador de objetos.

•	Desde el Examinador de objetos, puede pegar código en un módulo seleccionando un método o propiedad y haciendo clic en Copiar al portapapeles  [image]  en la barra de herramientas Examinador de objetos y luego cambiando a la ventana Módulo y eligiendo Pegar  [image] en la barra de herramientas Visual Basic.

•	Puede obtener ayuda acerca de cualquier objeto, método, propiedad o evento desde el Examinador de objetos seleccionando el nombre en el cuadro Miembros de y eligiendo Ayuda  [image]  en la barra de herramientas Examinador de objetos o presionando F1.

•	Para ver la definición de un procedimiento definido por el usuario, seleccione primero de la lista Proyecto/Biblioteca el nombre del proyecto que contiene el procedimiento. A continuación seleccione el nombre del módulo estándar o módulo de clase que contiene el procedimiento de la lista Clases. Seleccione el nombre del procedimiento en la lista Miembros de y elija Ver definición  [image]  en la barra de herramientas. Microsoft Access abre el módulo que contiene este procedimiento y coloca el punto de inserción dentro del procedimiento.

•	Para volver a un elemento que haya visto previamente, haga clic en Volver  [image]  en la barra de herramientas. Después de haber elegido Volver, puede elegir Avanzar  [image] para desplazarse de nuevo a donde comenzó.

•	Algunas de las constantes intrínsecas se agrupan ahora en el Examinador de objetos de acuerdo con los métodos con los que las use. Por ejemplo, haga clic en Access en el cuadro Proyecto/Biblioteca, y luego desplácese por la lista Clases hasta pasar todas las clases de objetos. Verá todos los grupos de constantes disponibles en Microsoft Access. Elija AcCommand para ver todas las constantes que se pueden usar con el método RunCommand.

Nota   Para ver en el Examinador de objetos los objetos proporcionados por la biblioteca de objetos de Microsoft Office 8.0, incluyendo las barras de comandos, debe establecer una referencia a esta biblioteca. Para obtener más información acerca de cómo establecer una referencia, consulte Establecer referencias a bibliotecas de tipos.


Establecer referencias a bibliotecas de tipos

Cuando se establece una referencia a la biblioteca de tipos de otra aplicación, puede usar en el código los objetos que proporcina esa aplicación. Por ejemplo, si establece una referencia desde Microsoft Access a la biblioteca de Microsoft Excel, puede usar los objetos Microsoft Excel a través de Automatización. Si establece una referencia a un proyecto Visual Basic en otra base de datos Microsoft Access, puede llamar a sus procedimientos públicos. Si establece una referencia a un control ActiveX, puede usar ese control en los formularios de Microsoft Access.

Puede establecer una referencia desde Microsoft Access mientras está abierta la ventana Módulo, o puede establecer una referencia en el código de Visual Basic.

Establecer una referencia desde Microsoft Access

Para establecer una referencia a la biblioteca de tipos de una aplicación:

1.	En el menú Herramientas, haga clic en Referencias. El comando Referencias del menú Herramientas está disponible sólo cuando esté abierta una ventana Módulo y activa en la vista Diseño.

2.	Seleccione las casillas de verificación para aquellas aplicaciones a cuyas bibliotecas de tipos desea hacer referencia.

Establecer una referencia desde Visual Basic

Para establecer una referencia desde Visual Basic, se crea un nuevo objeto Reference que represente a la referencia deseada. La colección References contiene todas las referencias establecidas en la actualidad.

Para crear un nuevo objeto Reference, use el método AddFromFile o el método AddFromGUID de la colección References. Para eliminar un objeto Reference, use el método Remove.

Ventajas del establecimiento de referencias

El código de Automatización se ejecutará más rápidamente si se establece una referencia a la biblioteca de tipos de otra aplicación antes de trabajar con sus objetos. Si establece dicha referencia, en la otra aplicación puede declarar una variable de objeto que represente a un objeto como su tipo más específico. Por ejemplo, si está escribiendo código para trabajar con objetos Microsoft Excel, puede declarar una variable de objeto del tipo Excel.Application usando la siguiente sintaxis, aunque sólo si ha creado una referencia a la biblioteca de tipos Microsoft Excel:

Dim appXL As New Excel.Application

Si no ha establecido una referencia a la biblioteca de tipos de Microsoft Excel, debe declarar la variable como una variable genérica del tipo Object. El siguiente código se ejecuta de forma más lenta:

Dim appXL As Object

Además, si establece una referencia a la biblioteca de tipos de una aplicación, todos sus objetos, así como sus métodos y propiedades, se enumeran en el Examinador de objetos. Esto hace mas fácil determinar qué propiedades y métodos hay disponibles para cada objeto.

Puesto que Microsoft Access es un componente ActiveX compatible con la Automatización, puede establecer una referencia a su biblioteca de tipos desde otra aplicación y trabajar con los objetos Microsoft Access desde esa aplicación.


Lo nuevo para los programadores en la ventana Depuración

La ventana Depuración en Microsoft Access 97 consiste en tres paneles: un panel Inmediato que funciona de forma muy parecida a la ventana Inmediata de las versiones anteriores de Microsoft Access, un panel Locales que muestra todas las variables en el marco de la pila actual junto con sus valores, y un panel Inspección. Puede cambiar entre los paneles de Locales y de Inspección haciendo clic en la ficha Locales o en la ficha Inspección de la ventana Depuración. El panel Inmediato permanece visible independientemente de la ficha que se elija.

Para ver la ventana Depuración, abra un módulo y haga clic en la ventana Depuración  [image]  en la barra de herramientas. También puede abrir la ventana Depuración haciendo clic en la ventana Depuración en el menú Ver o presionando CTRL+G cuando trabaje en cualquier parte de Microsoft Access.

El panel Locales

El panel Locales muestra una lista de variables en tres columnas: Expresión, Valor y Tipo. Algunas variables, como los tipos, matrices y objetos definidos por el usuario, pueden contener información jerárquica. Estas variables tienen un botón expandir/contraer a la izquierda de los nombres de la variable para controlar la presentación de la información jerárquica. Cuando el panel Locales está visible, se actualiza automáticamente cuando el modo de ejecución cambia desde el modo de ejecución al modo de interrupción. Esto ocurre cuando la ejecución alcanza un punto de interrupción o cuando empieza a ir paso a paso a través del código.

La primera variable en la lista es una variables de modulo especial. Para un módulo de clase, esta es la variable definida por el sistema Me. Esto es una referencia de objeto a la instancia actual de la clase definida por el módulo actual. Puesto que esta variable es una referencia de objeto, puede ser expandida para mostrar todas las propiedades y datos de los miembros de la instancia de clase actual. Para los módulos estándar, la primera variable es el nombre del módulo actual y también puede ser expandida para mostrar todas las variables a nivel del módulo del módulo actual. Puede cambiar el valor de una variable en el panel Locales, pero no puede cambiar sus valores Expresión o Tipo.

El panel Inspección

El panel Inspección permite ver el valor de una expresión o de una variable mientras se ejecuta el código. Para establecer una expresión de inspección, haga clic en Agregar inspección en el menú Depurar. El panel Inspección ha sido mejorado para proporcionar las siguientes funcionalidades:

•	Expandir/contraer la información jerárquica.

•	Cambiar el tamaño de los encabezados de columna.

•	Modificar los valores en el momento.

El panel Inmediato

Puede ejecutar cualquier procedimiento Sub o Function, incluyendo los procedimientos de evento, en el panel Inmediato.

Para ejecutar un procedimiento definido dentro de un módulo de clase desde el panel Inmediato, debe cualificar el procedimiento con el nombre del módulo de clase, a menos que se encuentre en el modo de interrupción dentro de ese módulo. Si se encuentra en el modo de interrupción, no es necesario que cualifique el procedimiento, porque ese módulo se encuentra actualmente dentro del alcance.

El siguiente ejemplo, cuando se escribe en el panel Inmediato de la ventana Depuración, ejecuta un procedimiento ListaNombres que ha sido definido en el módulo de clase asociado con un formulario Empleados:

Form_Empleados.ListaNombres

El siguiente ejemplo ejecuta el procedimiento de evento Clic para un botón de comando llamado PersonalInfo de un formulario Empleados:

Form_Empleados.PersonalInfo_Clic

Otras características de la ventana Depuración

La nueva ventana Depuración proporciona información de forma automática acerca del estado del código. Cuando no haya código en ejecución, la barra de estado de la parte superior de la ventana Depuración muestra "<Preparado>". Una vez comienza la ejecución del código, la barra de estado muestra el nombre de la base de datos actual, el módulo en el que reside el procedimiento que se está ejecutando, y el nombre del propio procedimiento.

Puede ver la ventana Llamadas desde la ventana Depuración haciendo clic en el botón Generar [image].


Programar con módulos de clase

En Microsoft Access 97, hay dos tipos de módulos: los módulos estándar y los módulos de clase. En Microsoft Access 95, los módulos de clase sólo existen en asociación con un formulario o informe. En Microsoft Access 97, también existen en la ficha Módulos de la ventana Base de datos.

Nuevo en Microsoft Access 97: Creación de objetos personalizados con los módulos de clase

Puede usar un módulo de clase para crear una definición para un objeto personalizado. El nombre con el que guarda el módulo de clase se convierte en el nombre del objeto personalizado. Los procedimientos públicos Sub y Function que define dentro de un módulo de clase se convierten en métodos personalizados del objeto. Los procedimientos públicos Property Let, Property Get, y Property Set se convierten en propiedades del objeto.

Una vez que haya definido los procedimientos dentro del módulo de clase, puede crear el nuevo objeto creando una nueva instancia de la clase. Para crear una nueva instancia de una clase, declare una variable del tipo definido por esa clase. Por ejemplo, si el nombre de su clase es ABasicClass, crearía una nueva instancia de la misma de la siguiente manera:

Dim abc As New ABasicClass

Cuando se ejecuta el código que contiene esta declaración, Visual Basic crea la nueva instancia. Entonces puede aplicar sus métodos y propiedades usando la variable abc. Por ejemplo, si ha definido un método personalizado llamado ListaNombres, podría aplicarlo como sigue:

abc.ListaNombres

Nuevo en Microsoft Access 95: Creación de la instancia predeterminada de una clase Formulario

Cuando se abre un formulario en vista Formulario, tanto desde la interfaz de usuario como desde Visual Basic, se crea una instancia del módulo de clase de ese formulario. En otras palabras, se asigna espacio en memoria donde existe ahora el objeto, con lo que puede llamar entonces a sus métodos y establecer o devolver sus propiedades desde el código, como lo haría con cualquier objeto incorporado. Lo mismo es cierto cuando abre un informe en la Vista preliminar.

Cuando hace referencia a un formulario en el código Visual Basic, normalmente está trabajando con la instancia predeterminada de la clase del formulario. Una clase del formulario sólo tiene una instancia predeterminada. También puede crear múltiples instancias de la misma clase del formulario desde Visual Basic. Cuando crea múltiples instancias de una clase del formulario, se crean instancias no predeterminadas.

Hay cuatro formas de crear la instancia predeterminada de un formulario. Puede abrir un formulario existente usando la interfaz de usuario, ejecutando el método OpenForm del objeto DoCmd, llamando a la función CreateForm y cambiando el nuevo formulario a la vista Formulario, o usando Visual Basic para crear una variable del tipo Form para hacer referencia a la instancia predeterminada. El siguiente ejemplo abre un formulario Empleados y apunta una variable de objeto Form al mismo:

Dim frm As Form

DoCmd.OpenForm "Empleados"

Set frm = Forms!Empleados

Microsoft Access proporciona también un acceso directo que le permite abrir un formulario y hacer referencia a un método o propiedad de ese formulario o a uno de sus controles en un solo paso. Al módulo de clase del formulario se hace referencia como se muestra en el siguiente ejemplo:

Form_Employees.Visible = True

Form_Employees.Caption = "Nuevos empleados"

Cuando se ejecuta este código, Microsoft Access abre el formulario Empleados en la vista Formulario, si todavía no está abierto, y establece el título del formulario a "Nuevos empleados".  El formulario no es visible hasta que se establezca de forma explícita su propiedad Visible a True (–1). Cuando el procedimiento que llama a este código finaliza la ejecución, esta instancia del formulario se destruye, es decir, se cierra el formulario.

Si intenta ejecutar este código el formulario Empleados cuando está abierto en vista Diseño, Microsoft Access genera un error en tiempo de ejecución. El formulario debe  o abrirse en la vista Formulario o no abrirse.

Si usa esta sintaxis para cambiar una propiedad del formulario o de uno de sus controles, ese cambio se pierde cuando se cierra el formulario. Esto es también verdad cada vez que cambie el valor de una propiedad de un formulario en la vista Formulario. La propiedad se debe cambiar en la vista Diseño y guardar el cambio con el formulario.

Nuevo en Microsoft Access 95: Creación de múltiples instancias no predeterminadas de los formularios

Puede crear múltiples instancias no predeterminadas de una clase de un formulario si desea mostrar a la vez más de una instancia de un formulario. Por ejemplo, podría desear mostrar los registros de un empleado y el jefe del empleado al mismo tiempo. Puede crear una instancia de la clase del formulario Empleados para mostrar el registro del empleado, y otra para mostrar el registro del jefe.

Para crear nuevas instancias no predeterminadas de una clase de un formulario desde Visual Basic, declare una variable para la que el tipo es el nombre del módulo de clase del formulario. Debe incluir la palabra clave New en la declaración de la variable. Por ejemplo, el siguiente código crea una nueva instancia del formulario Empleados y la asigna a una variable del tipo Form:

Dim frm As New Form_Empleados

Esta instancia no predeterminada del formulario no es visible hasta que establezca de forma explícita su propiedad Visible.

Cuando el procedimiento que crea esta instancia ha finalizado la ejecución, la instancia se elimina de la memoria, a menos que haya declarado la variable que la representa como una variable a nivel de módulo. Puesto que las variables a nivel del módulo retienen sus valores hasta que son restablecidas con el comando Restablecer en el menú Ejecutar o con el botón Restablecer [image]  en la barra de herramientas, el formulario estará abierto si la variable ha sido declarada como una variable a nivel de módulo.

Cualquier propiedad que se establezca afectará a esta instancia de la clase del formulario, pero no será guardada con el formulario. Además, no se podrá crear una nueva instancia de la clase del formulario si el formulario está abierto en la vista Diseño.

No se  puede hacer referencia a una instancia no predeterminada de una clase del formulario, por el nombre en la colección Formularios (Forms). Sólo se puede hacer referencia a la misma por el número de índice. Puesto que puede crear múltiples instancias de un formulario, y cada instancia tiene el mismo nombre, puede tener más de un formulario con el mismo nombre en la colección Formularios (Forms), sin tener ninguna forma de distinguirlos salvo por el número de índice.


Automatización con Microsoft Access

Microsoft Access es un componente ActiveX compatible con la Automatización, conocida anteriormente como Automatización OLE. Microsoft Access admite la Automatización de dos formas. Desde Microsoft Access, puede trabajar con los objetos suministrados por otro componente. Microsoft Access suministra también sus objetos a otros componentes ActiveX.

En las versiones previas de Microsoft Access, podía usar la función CreateObject o la función GetObject para apuntar una variable a una instancia de un componente. En Microsoft Access 97, puede usar también la palabra clave New para crear una nueva instancia de algunos componentes. Compruebe la documentación del objeto para determinar la sintaxis con la que es compatible.

En Microsoft Access, puede establecer una referencia a la biblioteca de tipos de un componente para mejorar el rendimiento cuando trabaje con ese componente a través de Automatización. Microsoft Access incluye también el Examinador de objetos, una herramienta que le permite ver los objetos de la biblioteca de tipos de otro componente, así como sus métodos y propiedades.

La biblioteca de tipos de Microsoft Access ofrece información acerca de los objetos Microsoft Access a otros componentes. Puede establecer una referencia a la biblioteca de tipos Microsoft Access desde un componente y ver sus objetos en el Examinador de objetos.

Para trabajar con los objetos de Microsoft Access a través de Automatización, debe crear una instancia del objeto Application de Microsoft Access. Por ejemplo, suponga que desea mostrar datos de Microsoft Excel en un formulario o informe de Microsoft Access. Para ejecutar Microsoft Access desde Microsoft Excel, puede usar la palabra clave New para crear una instancia del objeto Application de Microsoft Access. También puede usar la función CreateObject para crear una nueva instancia del objeto Application de Microsoft Access, o puede usar la función GetObject para apuntar una variable de objeto a una instancia existente de Microsoft Access. Compruebe la documentación del componente para determinar la sintaxis con la que es compatible.

Una vez haya ejecutado una instancia de Microsoft Access, si desea controlar cualquier objeto de Microsoft Access, debe abrir una base de datos en la ventana Microsoft Access usando el método OpenCurrentDatabase o el método NewCurrentDatabase. Si sólo ha abierto Microsoft Access como una forma de usar los objetos de acceso a datos proporcionados por Microsoft DAO, entonces no es necesario que abra una base de datos en la ventana Microsoft Access. Puede usar la propiedad DBEngine del objeto Application de Microsoft Access para tener acceso a los objetos de la biblioteca de objetos DAO 3.5 de Microsoft durante una operación de Automatización.


Mejoras en el rendimiento de la compilación

Microsoft Access incluye mejoras en la carga de los módulos y en el rendimiento de la compilación para hacer que su código se compile y se ejecute más rápidamente.

Módulos de formulario y de informe creados a petición

Cuando se crea un formulario o informe en Microsoft Access 97, el formulario o informe no tiene asociado un módulo de forma automática. Cuando hace clic en Código  [image]  en la barra de herramientas para ver el módulo del formulario o del informe, se crea el módulo. También puede crear el módulo desde Visual Basic mediante una referencia a la propiedad Module del formulario mientras el formulario o informe se encuentra en la vista Diseño, o al establecer la propiedad TieneUnMóduloAsociado (HasModule) a True (–1).

El valor de la propiedad TieneMóduloAsociado (HasModule) indica si un formulario o informe tiene en la actualidad un módulo asociado.

Puesto que un formulario o informe no se crea hasta que necesita agregarle código al mismo, su proyecto puede tener menos módulos que compilar, lo que resulta en un rendimiento mejorado de la compilación. Además, los formularios e informes sin módulos se cargan más rápidamente que los que contienen módulos.

Comandos para compilar y guardar los módulos

Los comandos Compilar todos los módulos, Compilar los módulos cargados, y Compilar y guardar todos los módulos están disponibles en el menú Depurar. El comando Compilar todos los módulos compila todos los módulos de la base de datos, tanto si están cargados actualmente como si no lo están. El comando Compilar los módulos cargados sólo compila los módulos cargados. El comando Compilar y guardar todos los módulos guarda todo el código de la base de datos en su estado totalmente compilado.

Compilación a petición

Es una buena idea compilar explícitamente los módulos del proyecto usando los comandos descritos anteriormente, aunque no es necesario. Microsoft Access compila un módulo antes de ejecutar un procedimiento en el mismo si el módulo no ha sido todavía compilado.

Cuando se carga un módulo para su ejecución, Microsoft Access comprueba si el módulo ha sido ya compilado. Si no lo ha sido, Microsoft Access compila el módulo inmediatamente antes de ejecutar un procedimiento dentro del mismo. El proceso de compilación ralentiza el código, de tal forma que los módulos que han sido guardados en un estado compilado se ejecutan más rápidamente.

El comportamiento de la compilación viene determinado en parte por el valor de la opción Compilar bajo petición de la ficha Módulo del cuadro de diálogo Opciones, disponible haciendo clic en Opciones en el menú Herramientas. Microsoft Access establece esta opción de forma predeterminada. Para obtener el mejor rendimiento, debería dejar seleccionada esta opción.

Cuando se selecciona la opción Compilar bajo petición, los módulos sin compilar no se compilan hasta que son cargados para ser ejecutados. Si esta opción no está seleccionada, un módulo sin compilar es compilado tan pronto como se carga un módulo que contiene un procedimiento que llama a un procedimiento dentro de ese módulo. Por ejemplo, suponga que tiene tres módulos sin compilar: MóduloA, MóduloB y MóduloC. El ProcedimientoA del MóduloA contiene una llamada al ProcedimientoB del MóduloB. Un procedimiento distinto del MóduloA contiene una llamada al ProcedimientoC del MóduloC.

Si está seleccionada la opción Compilar bajo petición, cuando llame al ProcedimientoA, se cargarán y compilarán el MóduloA y el MóduloB. Puesto que el ProcedimientoA no llama al ProcedimientoC, el MóduloC no es ni cargado ni compilado.

Si la opción Compilar bajo petición no está seleccionada, cuando se llama al ProcedimientoA, se cargan y se compilan los módulos MóduloA, MóduloB y MóduloC. Puesto que el MóduloA contiene una llamada al ProcedimientoC, el MóduloC se carga y se compila, aunque el ProcedimientoA no llama al ProcedimientoC.

Observe que en Microsoft Access 95, cuando ejecuta un procedimiento en un módulo, todos los módulos del árbol de llamadas potencial son cargados, aunque, de forma predeterminada, no se compilan hasta que sea llamado un procedimiento dentro de ellos. Puesto que Microsoft Access 97 carga los módulos solamente en base a su necesidad, el código puede ejecutarse más rápidamente en muchos casos.

Puede mejorar el rendimiento aún más agrupando los procedimientos en módulos para reducir las compilaciones innecesarias. Agrupe los procedimientos en módulos con otros procedimientos a los que llamen, en vez de agruparlos en módulos con procedimientos no relacionados.


Establecer una referencia a un proyecto de Visual Basic en otra base de datos Microsoft Access

Cada base de datos Microsoft Access incluye un proyecto Visual Basic. El proyecto Visual Basic es el conjunto de todos los módulos del proyecto, incluyendo los módulos estándar y los módulos de clase. Cada base de datos Microsoft Access, base de datos de bibliotecas, o de complementos contenida en un archivo .mde incluye un proyecto Visual Basic.

El nombre de la base de datos y el nombre del proyecto pueden ser distintos. El nombre de la base de datos se determina por el nombre del archivo .mdb (o .mda o .mde), mientras que el nombre del proyecto está determinado por el valor de la opción Nombre de proyecto en la ficha Avanzadas del cuadro de diálogo Opciones, disponible al hacer clic en Opciones en el menú Herramientas. Cuando crea una base de datos por primera vez, el nombre de la base de datos y el nombre del proyecto son el mismo de forma predeterminada. Sin embargo, si cambia el nombre de la base de datos, el nombre del proyecto no cambia automáticamente. De la misma forma, el cambio del nombre del proyecto no tiene efecto sobre el nombre de la base de datos.

Puede establecer una referencia desde un proyecto Visual Basic de una base de datos Microsoft Access a un proyecto en otra base de datos Microsoft Access, una base de datos de bibliotecas, o una de complementos contenida en un archivo .mde. Una vez que haya establecido una referencia, puede ejecutar procedimientos Visual Basic del proyecto al que ha hecho referencia. Por ejemplo, la base de datos de muestra Neptuno incluye un módulo llamado Funciones de utilidad que contienen una función llamada EstáCargada. Puede establecer una referencia al proyecto de la base de datos de muestra Neptuno desde el proyecto de la base de datos actual, y luego llamar a la función EstáCargada exactamente como lo haría si estuviera definida dentro de la base de datos actual.

Para establecer una referencia al proyecto de la base de datos de muestra Neptuno desde otro proyecto:

1.	Abra la ventana Módulo.

2.	En el menú Herramientas, haga clic en Referencias, y elija Examinar en el cuadro de diálogo Referencias.

3.	En el cuadro Tipo de archivo, haga clic en Bases de datos (*.mdb, *.mda, *.mde).

4.	Ubique el archivo Neptuno.mdb. Si ha instalado este archivo, estará en la carpeta \Archivos de programa\Microsoft Office\Office\Ejemplos de forma predeterminada.

5.	Haga clic en Aceptar.

Ahora debería ver "Neptuno.mdb" en la lista de referencias disponibles en el cuadro de diálogo Referencias.

Notas

•	Establezca una referencia al proyecto en otra base de datos Microsoft Access cuando desee llamar a un procedimiento público que está definido dentro de un módulo estándar en esa base de datos. No puede llamar a procedimientos que estén definidos dentro de un módulo de clase o procedimiento en un módulo estándar que esté precedido con la palabra clave Private.

•	Sólo puede establecer una referencia al proyecto en una base de datos Microsoft Access desde otra base de datos Microsoft Access.

•	Sólo puede establecer una referencia a un proyecto de otra base de datos Microsoft Access 97. Para establecer una referencia a un proyecto en una base de datos creada en una versión previa de Microsoft Access, convierta primero esa base de datos a Microsoft Access 97.

•	Si establece una referencia a un proyecto o biblioteca de tipos desde Microsoft Access y luego mueve el archivo que contiene ese proyecto o biblioteca de tipos a una carpeta distinta, Microsoft Access intentará ubicar y restablecer la referencia. Si la clave RefLibPaths existe en el registro, Microsoft Access buscará primero allí. Si no encuentra una entrada que coincida, Microsoft Access buscará el archivo primero en la carpeta actual, y luego en todas las carpetas de la unidad. Puede crear la clave RefLibPaths usando el Editor de registro en Windows, bajo la clave del registro \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Access. Para obtener más información acerca de la utilización del Editor del Registro, consulte la documentación de Windows.


Programar barras de herramientas y de barras de menús

Microsoft Access 97 incluye barras de comandos, que son barras de herramientas y barras de menús programables. Usando las barras de comandos, puede crear barras de herramientas y de menús personalizadas para la aplicación.

Para poder programar con las barras de comandos, debe establecer una referencia a la biblioteca de objetos de Microsoft Office 8.0. Elija Referencias en el menú Herramientas mientras se encuentre en la vista Diseño, y seleccione la casilla de verificación próxima a Biblioteca de objetos de Microsoft Office 8.0.

La colección CommandBars incluye todas las barras de comandos que existen actualmente dentro de la aplicación. Puede agregar un nuevo objeto CommandBar a la colección CommandBars usando el método Add de la colección CommandBars. Por ejemplo, el siguiente código crea una nueva barra de comandos llamada MiBarraDeComandos. Observe que necesita establecer la propiedad Visible de la nueva barra de comandos a True (–1) para poder verla.

Dim cmb As CommandBar

Set cmb = Application.CommandBars.Add("MiBarraDeComandos")

cmb.Visible = True

Cada objeto CommandBar tiene una colección CommandBarControls, que contiene todos los controles en la barra de comandos. Los controles de barras de comandos son distintos de los controles de un formulario. Puede crear distintos tipos de controles de barras de comandos, incluyendo botones, cuadros combinados, y emergentes. Puede combinar estos controles para crear una barra de herramientas o barra de menús personalizada.

Para hacer referencia a la colección CommandBarControls, use la propiedad Controles (Controls) del objeto CommandBar. Para agregar un control a una barra de comandos, use el método Add de la colección CommandBarControls, especificando qué tipo de control desea crear. El siguiente ejemplo agrega un nuevo botón a la barra de comandos creada en el ejemplo anterior:

Dim cbc As CommandBarControl

Set cbc = cmb.Controls.Add(msoControlButton)

cbc.Caption = "Botón1"

cbc.Style = msoButtonCaption

Puede especificar que se evalúe una expresión o se ejecute una macro cuando el usuario haga clic en un control de barra de comandos. Establezca la propiedad Acción (OnAction) al nombre de una macro o una expresión que contenga una función incorporada o definida por el usuario. Por ejemplo, la siguiente línea de código establece la propiedad Acción (OnAction) de un objeto CommandBarControl a una expresión que incluye la función CuadroMsj (MsgBox). Este ejemplo usa los objetos CommandBar y CommandBarControl creados en los dos ejemplos anteriores:

CommandBars("MiBarraDeComando").Controls("Botón1").OnAction = _

"=MsgBox(""¡Guau!"")"

Nota   Al contrario que la mayoría de las demás colecciones de Microsoft Access, la colección CommandBars y todas las colecciones que contiene están indexadas empezando con 1 en lugar de con 0.


Crear réplicas parciales

Qué son las réplicas parciales

Las réplicas parciales son réplicas que contienen sólo un subconjunto de registros de una réplica completa. Para crear una réplica parcial, se especifica un filtro que restringe los datos que están sincronizados con un subconjunto de la base de datos completa. Al usar réplicas parciales, puede sincronizar una réplica sólo con los datos que necesite, en lugar de con una base de datos completa.

Por ejemplo, una compañía podría almacenar su base de datos completa de ventas en las oficinas centrales, pero replicar sólo los datos regionales a sus oficinas regionales a lo ancho del país. Puede crear una réplica separada para cada oficina regional que contenga sólo los datos relacionados con esa región. La base de datos en la oficina central sería una réplica completa, con la que se sincronizaría cada réplica parcial.

Ventajas de la utilización de réplicas parciales

Las réplicas parciales pueden hacer su base de datos más pequeña efectivamente, puesto que sólo necesita replicar las partes con las que trabaja con frecuencia. La sincronización de una réplica parcial necesita menos tiempo, y la propia réplica requiere menos espacio en disco.

Las réplicas parciales pueden ayudar a restringir el acceso a los datos. En el caso de una base de datos de ventas, las réplicas parciales pueden ayudar a asegurar que las personas de una oficina de ventas regional no vean los datos de ventas de las demás oficinas de ventas. Aunque puede usar las réplicas parciales para restringir el acceso a los registros, no son un substituto de un sistema de seguridad.

Las réplicas parciales tienen también beneficios para la replicación de datos sobre las redes de área local (LAN) y las redes de área amplia (WAN). Al restringir los datos que son replicados, las réplicas parciales pueden reducir la cantidad de datos transferidos sobre un LAN o un transportador de larga distancia. Esto puede reducir el tráfico de la red y disminuir los costes de comunicaciones.

Creación de una réplica parcial con objetos de acceso a datos (DAO)

Para crear una réplica parcial, siga estos pasos:

1.	Use el método MakeReplica en un objeto Database, especificando la constante dbRepMakePartial en el argumento opciones. Esto crea la réplica parcial.

2.	Use las propiedades ReplicaFilter y PartialReplica para establecer los filtros y relaciones deseadas que determinen qué datos se van a replicar de la réplica completa.

3.	Use el método PopulatePartial para transferir desde la réplica completa todos los registros que cumplan los nuevos criterios de filtro de la réplica.

Cuando cambie los datos o los criterios de filtro en la réplica parcial, debe usar los métodos Synchronize y PopulatePartial juntos para asegurarse de  que todos los datos se propagan a la réplica completa y que la réplica parcial se vuelve a rellenar basándose en los criterios de filtrado actuales.

Nota   Una vez que haya creado un réplica parcial, no se puede convertir a una réplica completa. Si elimina todos los filtros y las relaciones de la réplica de la réplica parcial, contendrá todos los registros de una réplica completa, pero todavía tendrá las mismas limitaciones y restricciones de una réplica parcial.

Réplicas parciales e integridad referencial

En una replica que tenga relaciones que fuerzan la integridad referencial, muchas de las tablas de la base de datos pueden estar relacionadas con la tabla en la que se basa el filtro. Cuando crea una réplica parcial, es necesario que esté seguro que incluye todas las tablas que están relacionadas con la tabla que contiene los datos que desea.

Por ejemplo, si está usando la base de datos de muestra Neptuno, puede colocar un filtro en una tabla Empleados, tal como [IdEmpleado]=1, que sincroniza sólo los registros de un empleado. Puesto que la tabla Empleados está en una relación con las tablas Pedidos y Detalles del pedido, debe también incluir esas tablas, de tal forma que la réplica parcial incluya los registros correspondientes para ese empleado en las tablas Pedidos y Detalles del pedido.

Puede que necesite incluir otras tablas que sólo están relacionadas indirectamente con el filtro. Por ejemplo, puede que desee que su réplica parcial incluya una lista de todos los productos, de tal forma que los pedidos nuevos puedan incluir todos los productos disponibles. En este caso, debe incluir la tabla Productos en su réplica parcial.

También debe tener en cuenta las tablas en la base de datos que no tienen relaciones forzadas, tal como las tablas de búsqueda, o tablas con relaciones en las que no se pide la integridad referencial. Por ejemplo, una tabla que rellena un cuadro combinado podría no ser parte de ninguna relación. Si elige incluir tal tabla, se recuperarán todos los registros; en caso contrario, no se recuperará ningún registro.

Para obtener más información acerca de las réplicas parciales y de las herramientas que las crean, consulte el capítulo 29, "Uso de réplicas en la aplicación", en Creación de aplicaciones con Microsoft Access 97, y consulte la sección Información técnica en el sitio Web de Microsoft Access Developer Forum en http://www.microsoft.com/accessdev/.


Nuevas características Internet para programadores

Los hipervínculos conectan su aplicación a la Internet

Microsoft Access 97 incluye hipervínculos para ayudarle a conectar fácilmente su aplicación a la Internet o a una intranet. Un hipervínculo puede saltar a una ubicación en la Internet o en una intranet, a un objeto en la base de datos o en otra base de datos, o a un documento en su equipo o en otro equipo conectado por una red.

Microsoft Access ofrece un nuevo tipo de datos Hipervínculo que puede contener una dirección de hipervínculo. Puede definir un campo de tabla con este tipo de datos, con el fin de almacenar los hipervínculos como datos de una tabla.

También puede incluir hipervínculos en un formulario o informe. Hay tres tipos de controles que pueden contener hipervínculos: botón de comando, etiquetas y controles de imagen.  Cada uno de estos controles tiene una propiedad Hyperlink, que devuelve un objeto Hyperlink que representa al hipervínculo contenido en el control. Cada control tiene también una propiedad DirecciónDeHipervínculo (HyperlinkAddress) y una SubdirecciónDeHipervínculo (HyperlinkSubAddress), que se usa para establecer o devolver la dirección o subdirección del hipervínculo.

Haciendo clic en un control que contiene un hipervínculo sigue el hipervínculo y ejecuta también el evento Click del control. Cuando se sigue el hipervínculo, se abre el documento u objeto especificado por las propiedades DirecciónDeHipervínculo (HyperlinkAddress) y SubdirecciónDeHipervínculo (HyperlinkSubAddress). Por ejemplo, si la propiedad DirecciónDeHipervínculo (HyperlinkAddress) hace referencia a un formulario en la base de datos Microsoft Access, se abre ese formulario. Si hace referencia a un documento Microsoft Word en otra máquina a la que pueda tener acceso a través de la red, se abre Microsoft Word y se abre el documento en él. Si se refiere a una dirección en el World Wide Web, se abrirá su explorador de Web (por ejemplo, Microsoft Internet Explorer) y mostrará la página Web.

En Visual Basic, puede simular el efecto de hacer clic en un hipervínculo usando el método Follow del objeto Hyperlink, o el método FollowHyperlink del objeto Application. Por ejemplo, puede incluir código en un evento Load de un formulario que sigue a un hipervínculo especificado cuando se abre el formulario.

Examinar páginas Web con el control Explorador de Web de Microsoft

El control Explorador de Web de Microsoft es un control ActiveX que le permite ver páginas Web y otros documentos en la Internet o en una intranet desde un formulario Microsoft Access. Microsoft Internet Explorer 3.0 proporciona el control Explorador de Web, que se incluye con Microsoft Office 97. También puede trasnferiri de manera gratuita Microsoft Internet Explorer desde el sitio Web corporativo de Microsoft (http://www.microsoft.com/). Puede obtener documentación acerca del control Explorador de Web en http://www.microsoft.com/intdev/sdk/docs/iexplore/. Si adquirió Microsoft Office 97 en CD-ROM, puede ver un archivo de Ayuda que contiene esta información copiándolo del Value Pack de Office 97. Si desea información acerca de obtener archivo de Ayuda del control Explorador de Web del Value Pack, vea Acerca del Value Pack de Office 97.

El control Explorador de Web se registra de forma automática con el sistema operativo cuando se instala Internet Explorer, de tal forma que puede usarlo desde Microsoft Access sin registrarlo primero. Para agregar el control Explorador de Web a un formulario, haga clic en control ActiveX en el menú Insertar, y luego elija Control Explorador de Web de Microsoft en la lista de controles ActiveX.

Una vez que haya agregado el control Explorador de Web a un formulario, puede usar el método Navigate del control para abrir una página Web dentro de la ventana WebBrowser. Por ejemplo, si ha agregado a un formulario un control Explorador de Web llamado ActiveXCtl0, podría crear el siguiente procedimiento de evento Cargar para el formulario.

Private Sub Form_Cargar

Me!ActiveXCtl0.Navigate "http://www.microsoft.com/"

End Sub

Guardar datos como HTML

Hay varias formas de guardar objetos Microsoft Access en formato HTML. Para obtener más información, consulte Exportar tablas, consultas, formularios e informes a formato HTML.

Importar o vincular datos desde tablas HTML

Los datos que tienen formato de una tabla HTML pueden ser importados o vinculados a la base de datos Microsoft Access. Para obtener más información, consulte Importar y vincular tablas y listas HTML.

Sincronizar réplicas de base de datos en un servidor Internet

Se pueden sincronizar réplicas de bases de datos sobre la Internet estableciendo el indicador dbRepSyncInternet cuando se use el método Synchronize.

Para obtener más información acerca de cómo trabajar con las características de Internet/intranet en Microsoft Access, consulte el capítulo 21, "Programación de aplicaciones para Internet y el World Wide Web", en Creación de aplicaciones con Microsoft Access 97. Para obtener más información acerca del trabajo con controles ActiveX, consulte el capítulo 16, "Uso de controles ActiveX", en Creación de aplicaciones con Microsoft Access 97.


Usar ODBCDirect con Microsoft Access

Qué es ODBCDirect

ODBCDirect es una tecnología que permite trabajar con servidores de bases de datos ODBC sin necesidad de cargar el motor de base de datos Microsoft Jet. ODBCDirect se basa en el modelo de objetos Microsoft DAO 3.5, con lo que puede modificar fácilmente el código DAO existente y obtener ventaja de ODBCDirect. Microsoft DAO 3.5 incluye nuevos objetos, métodos, y propiedades compatibles con ODBCDirect.

Ventajas del acceso a datos ODBC con ODBCDirect

ODBCDirect ofrece las siguientes ventajas para las operaciones ODBC:

•	ODBCDirect puede hacer el código más rápido y más eficiente al ofrecer acceso directo a orígenes de datos ODBC. Puesto que no requiere que se cargue el motor de base de datos Microsoft Jet, ODBCDirect consume menos recursos en el lado del cliente. El servidor ODBC es el responsable de todo el proceso de consulta.

•	ODBCDirect ofrece un acceso mejorado a las características específicas del servidor que no están disponibles usando ODBC a través de Microsoft Jet. Por ejemplo, para los servidores compatibles con la especificación del cursor, ODBCDirect permite especificar dónde está ubicado el cursor, si en el servidor o localmente. Además, para interactuar con los procedimientos almacenados al nivel del servidor, puede especificar valores de entrada y comprobar los valores de retorno, lo que no puede hacer cuando usa Microsoft Jet.

•	ODBCDirect también admite consultas asíncronas. Cuando ejecuta una consulta, no tiene que esperar a que la consulta finalice la ejecución antes de empezar otra operación. Puede hacer el seguimiento de la consulta comprobando la propiedad StillExecuting.

•	ODBCDirect admite actualización por lotes, lo que permite almacenar localmente en el caché los cambios del objeto Recordset y luego enviar estos cambios al servidor en un solo lote.

•	Con ODBCDirect, puede crear conjuntos de resultados sin cursor simples o cursores más complejos. También puede ejecutar consultas que devuelven cualquier número de conjuntos de resultados. Puede limitar el número de filas devueltas y controlar todos los mensajes y errores generados por el origen de datos remoto sin que esto afecte al rendimiento de la consulta en ejecución.

Crear un espacio de trabajo ODBCDirect

Puede crear un espacio de trabajo ODBCDirect especificando la constante dbUseODBC para el argumento tipo del método CreateWorkspace. También puede especificar que se cree ese espacio de trabajo ODBCDirect de forma predeterminada estableciendo la propiedad DefaultType del objeto DBEngine.

Una vez ha creado un espacio de trabajo ODBCDirect, puede usar objetos, propiedades y métodos DAO específicos para trabajar con los datos del servidor de base de datos ODBC.

Ventajas del acceso a los datos ODBC con Microsoft Jet

Microsoft Jet y los espacios de trabajo ODBCDirect ofrecen funcionalidades distintas pero complementarias. Debe usar un espacio de trabajo Microsoft Jet para tener acceso a archivos .mdb y formatos de datos ISAM, como hojas de cálculo y texto. Microsoft Jet proporciona funcionalidades únicas que no están disponibles a través de ODBCDirect, incluyendo las siguientes:

•	Combinaciones actualizables. Debe usar un espacio de trabajo Microsoft Jet para actualizar los datos de los objetos Recordset basados en combinaciones de múltiples tablas.

•	Combinaciones heterogéneas. Debe usar un espacio de trabajo Microsoft Jet para realizar combinaciones de tablas de orígenes de datos distintos.

•	Operaciones DDL (Data Definition Language). Debe usar un espacio de trabajo Microsoft Jet para ejecutar operaciones DDL usando DAO. ODBCDirect no proporciona un objeto TableDef, de tal forma que no puede crear o modificar tablas usando DAO. Puede, sin embargo, realizar operaciones DDL usando ODBCDirect para ejecutar instrucciones SQL DDL.

•	Dependencia de formularios y controles. Si la aplicación requiere que los formularios y controles sean dependientes de los datos de un origen de datos ODBC, debe usar Microsoft Jet. Los datos a los que puede tener acceso dentro de un espacio de trabajo ODBCDirect no pueden ser dependientes de formularios o controles.

Si no necesita estas funcionalidades, puede usar un espacio de trabajo ODBCDirect.

Nota   Puede definir espacios de trabajo Microsoft Jet y ODBCDirect en la aplicación y mezclarlos como desee. Por ejemplo, en la misma función, puede definir un espacio de trabajo Microsoft Jet para ejecutar operaciones DDL usado DAO y puede definir también un espacio de trabajo ODBCDirect para realizar consultas asíncronas.


Lo nuevo para los programadores: el control ficha

Microsoft Access 97 incluye un nuevo control ficha, que puede usar para agrupar juntos conjuntos de controles dentro de un control individual. Por ejemplo, puede crear un cuadro de diálogo en forma de fichas con distintos tipos de opciones agrupadas en fichas distintas.

Las páginas individuales de un control ficha corresponden a los objetos Página (Page) de la colección Páginas (Pages) del control ficha. Cada objeto Page tiene su propia colección Controles (Controls), que contiene los objetos Control de esa página.

Para agregar una nueva página a un control ficha, use el método Add de la colección Pages. Para eliminar una página del control ficha, use el método Remove.

La propiedad Valor (Value) de un control ficha indica qué página está seleccionada actualmente. Devuelve un número entero que indica la posición de la página seleccionada en la colección Pages. Por ejemplo, si está seleccionada la primera página de un control ficha, la propiedad Value devuelve 0, el número de índice de la primera página en la colección Pages. Si está seleccionada la segunda página, la propiedad Valor (Value) devuelve 1, y así sucesivamente. La posición de la página dentro de la colección corresponde al valor de la propiedad ÍndiceDePáginas (PageIndex) de esa página.


Detección de errores

Se puede utilizar la instrucción On Error GoTo para interceptar errores y dirigir el flujo del procedimiento a la ubicación de las instrucciones de control de errores dentro de un procedimiento. Por ejemplo, la siguiente instrucción dirige el flujo a línea ControladorErrores:

On Error GoTo ControladorErrores

Asegúrese de dar a cada controlador de errores de un procedimiento un nombre único que no esté en conflicto con ningún otro elemento del procedimiento y asegúrese de agregar dos puntos al nombre. Dentro del procedimiento, coloque la instrucción Exit Sub o Exit Function delante del nombre del controlador de errores para que el procedimiento no ejecute el código de comprobación de error si el error no se produce.

Sub CausaUnError()

' Dirige el flujo del procedimiento.

On Error GoTo ControladorErrores

' Provoque el error de dividir por cero.

Err.Raise 11

Exit Sub

ControladorErrores:

' Muestra información del error.

MsgBox "Número de error " & Err.Number & ": " & Err.Description

' Continua con la instrucción que siga a la producción del error.

Resume Next

End Sub

El método Raise del objeto Err genera el error especificado. La propiedad Number del objeto Err devuelve el número que corresponde al error en tiempo de ejecución más reciente; la propiedad Descripción devuelve el texto del mensaje correspondiente a un error dado.

Notas

•	En las versiones 1.x y 2.0 de Microsoft Access, puede que haya utilizado la instrucción Error para generar el error, la función Err para devolver el número del error y la función Error para devolver una descripción del error. El código de control de errores que se basa en la instrucción Error y la función Error continuará funcionando. Sin embargo, es mejor utilizar el objeto Err y sus propiedades y métodos cuando se escriba código nuevo.

•	Las versiones 1.x y 2.0 de Microsoft Access devolvían sólo un error para todos los errores de automatización . La aplicación componente ActiveX que generaba el error devuelve ahora la misma información de error que daría si se estuviera trabajando en esa aplicación. Puede que necesite volver a escribir determinado código existente de control de errores para controlar correctamente los nuevos errores de automatización.

•	Si desea devolver la cadena descriptiva asociada a un error de Microsoft Access o a un error de objetos de acceso a datos (DAO), aunque el error no se haya producido realmente en el código, puede utilizar el método AccessError para devolver la cadena.

Para obtener más información acerca de establecer la detección de errores y cómo escribir instrucciones de control de errores, vea el capítulo 8, "Control de errores en tiempo de ejecución," en Creación de aplicaciones con Microsoft Access 97.


Llamada a procedimientos de un subformulario o subinforme

Se puede llamar a un procedimiento de un módulo asociado a un subformulario o subinforme de dos maneras. Si el formulario que contiene el subformulario está abierto en la vista Formulario, se puede hacer referencia al procedimiento como un método del subformulario. El ejemplo siguiente muestra cómo llamar al procedimiento ListarNombres del subformulario Pedidos que depende de un control de subformulario del formulario Pedidos:

Forms!Pedidos![Subformulario pedidos].Form.ListarNombres

También se puede crear una nueva instancia del formulario que se está utilizando como subformulario, aunque no estén abiertos ni el formulario principal ni el subformulario, y llamar al procedimiento. Esto funcionará para cualquier formulario, esté siendo usado o no como un subformulario. El ejemplo siguiente muestra cómo crear una instancia del subformulario Pedidos y llamar al procedimiento ListarNombres:

Dim frm As New [Form_Subformulario Pedidos]

frm.ListarNombres

Nota   Cuando cree una nueva instancia de un formulario con un nombre que consiste en más de una palabra, escriba el nombre de clase del formulario entre corchetes, como muestra el ejemplo anterior.


Elementos de tratamiento de errores en tiempo de ejecución

Errores y tratamiento de errores

Cuando esté programando una aplicación, es necesario que considere qué pasa cuando se produce un error. En una aplicación, un error se puede producir por una de estas dos razones: Primero, en el momento en el que se ejecuta la aplicación, alguna condición hace que falle el código que normalmente no falla. Por ejemplo, si el código intenta abrir una tabla que el usuario ha eliminado, se produce un error. Segundo, el código puede contener lógica de programación que no sea adecuada, y que evite que haga lo que se pretende. Por ejemplo, si el código intenta dividir un valor por cero, se producirá un error.

Si no se ha desarrollado tratamiento de errores, Visual Basic detiene la ejecución y muestra un mensaje de error cuando se produce un error en el código. En este momento, lo más seguro es que el usuario de la aplicación se quede confundido y frustrado cuando ocurra esto. Muchos de los problemas se pueden anticipar incluyendo en el código cuidadosas rutinas de tratamiento de errores para tratar cualquier error que pueda ocurrir.

Cuando en un procedimiento se agregan tratamientos de errores, debe considerarse cómo enrutará el procedimiento la ejecución cuando se produzca un error. El primer paso en la ejecución del enrutamiento a un tratamiento de errores es activar uno, incluyendo dentro del procedimiento algún tipo de instrucciones On Error. La instrucción On Error dirige la ejecución en el caso que se produzca un error. Si no hay instrucción On Error, cuando se produce el error Visual Basic simplemente detiene la ejecución y muestra un mensaje de error.

Cuando se produce un error en un procedimiento que posee un tratamiento de errores activado, Visual Basic no muestra el mensaje de error normal. En su lugar, enruta la ejecución al tratamiento de errores, si existe alguno. Cuando la ejecución pasa al tratamiento de errores activado, éste se vuelve activo. En el tratamiento de errores activo, se puede determinar el tipo de error que se produjo y tratarlo de la manera que elija. Microsoft Access proporciona dos objetos que contienen información acerca de los errores que se han producido: el objeto Err de Visual Basic y el objeto Error de DAO.

Para obtener más información acerca del tratamiento de errores, consulte el capítulo 8, "Tratamiento de errores en tiempo de ejecución", en Creación de aplicaciones con Microsoft Access 97.

Enrutar la ejecución cuando se produce un error

Un tratamiento de errores especifica lo que sucede dentro de un procedimiento cuando se produce un error. Por ejemplo, puede que desee finalizar el procedimiento si se produce cierto error, o puede que desee corregir la condición que provocó el error y posteriormente continuar con la ejecución. Las instrucciones On Error y Resume determinan la forma de proceder de la ejecución cuando se produce un error.

La instrucción On Error

La instrucción On Error activa o desactiva una rutina de tratamiento de errores. Si una rutina de tratamiento de errores está activada, la ejecución pasa a esta rutina cuando se produce un error.

La instrucción On Error tiene tres formas: On Error GoTo etiqueta, On Error GoTo 0 y On Error Resume Next. La instrucción On Error GoTo etiqueta activa una rutina de tratamiento de errores, empezando con la línea en la que se encuentra la instrucción. La rutina de tratamiento de errores debe activarse antes de la primera línea en la que pueda producirse el error. Cuando el tratamiento de errores está activo y se produce un error, la ejecución pasa a la línea especificada por el argumento etiqueta.

La línea especificada por el argumento etiqueta debería ser el inicio de la rutina de tratamiento de errores. Por ejemplo, el siguiente procedimiento determina que si se produce un error, la ejecución pase a la línea etiquetada como Error_PuedeProvocarUnError:

Function PuedeProvocarUnError()

' Activar tratamiento de errores.

On Error GoTo Error_PuedeProvocarUnError

.	' Incluir aquí código que pueda generar error.

.

.

Error_PuedeProvocarUnError:

.	' Incluir código aquí para tratar el error.

.

.

End Function

La instrucción On Error GoTo 0 desactiva el tratamiento de errores dentro de un procedimiento. No especifica la línea 0 como el principio del código de tratamiento de errores, incluso si el procedimiento contuviera una línea numerada como 0. Si en el código no hay una instrucción On Error GoTo 0, el tratamiento de errores se desactiva automáticamente cuando el procedimiento se haya ejecutado completamente. La instrucción On Error GoTo 0 restablece las propiedades del objeto Err, lo que tiene el mismo efecto que el método Clear del objeto Err.

La instrucción On Error Resume Next ignora la línea que provoca el error y enruta la ejecución a la línea siguiente a la que provocó el error. La ejecución no se interrumpe. Puede usar la instrucción On Error Resume Next si desea comprobar las propiedades del objeto Err inmediatamente detrás de la línea en la que anticipó que se produciría el error, y tratar el error dentro del procedimiento, en lugar de en el tratamiento de errores.

La instrucción Resume

La instrucción Resume dirige de nuevo la ejecución al cuerpo del procedimiento desde una rutina de tratamiento de errores. Puede incluir una instrucción Resume dentro de una rutina de tratamiento de errores si desea que la ejecución continúe en un punto determinado de un procedimiento. Sin embargo, la instrucción Resume no es necesaria; también puede finalizar el procedimiento detrás de la rutina de tratamiento de errores.

La instrucción Resume tiene tres formas. La instrucción Resume o Resume 0 devuelve la ejecución a la línea en la que se produjo el error. La instrucción Resume Next devuelve la ejecución a la línea que sigue inmediatamente a la que produjo el error. La instrucción Resume etiqueta devuelve la ejecución a la línea determinada por el argumento etiqueta. El argumento etiqueta debe indicar una etiqueta de línea o un número de línea.

Normalmente, la instrucción Resume o Resume 0 se utiliza cuando el usuario deba realizar una corrección. Por ejemplo, si pregunta al usuario por el nombre de una tabla que desee abrir, y el usuario introduce el nombre de una tabla que no existe, puede preguntarle de nuevo al usuario y continuar la ejecución con la instrucción que provocó el error.

La instrucción Resume Next se utiliza cuando el código corrige el error dentro de un tratamiento de errores, y desea continuar la ejecución sin volver a ejecutar la línea que provocó el error. La instrucción Resume etiqueta se utiliza cuando desee continuar la ejecución en otro punto del procedimiento, determinado por el argumento etiqueta. Por ejemplo, podría desear continuar la ejecución en una rutina de salida, como se describe en la siguiente sección.

Salida de un procedimiento

Cuando incluya en un procedimiento una rutina de tratamiento de errores, debe incluir también una rutina de salida, de forma que la rutina de tratamiento de errores se ejecutará sólo si se produce un error. Se puede especificar una rutina de salida con una etiqueta de línea de la misma forma que se especifica una rutina de tratamiento de errores.

Por ejemplo, puede agregar una rutina de salida al ejemplo de la sección anterior. Si no se produce un error, la rutina de salida se ejecuta detrás del cuerpo del procedimiento. Si se produce un error, entonces la ejecución pasa a la rutina de salida después de que se haya ejecutado el código de la rutina de tratamiento de errores. La rutina de salida contiene una instrucción Exit.

Function PuedeProvocarUnError()

' Activar tratamiento de errores.

On Error GoTo Error_PuedeProvocarUnError

.	' Incluir código aquí que puede generar errores.

.

.

Exit_PuedeProvocarUnError:

Exit Function

Error_PuedeProvocarUnError:

.	' Incluir código para tratar el error.

.

.

' Reanudar ejecución con rutina de salida para salir de función.

Resume Exit_PuedeProvocarUnError

End Function

Tratamiento de errores en procedimientos anidados

Cuando se produce un error en un procedimiento anidado que no tiene activado el tratamiento de errores, Visual Basic retrocede buscando por la lista de llamadas un tratamiento de errores en otro procedimiento, en lugar de detener simplemente la ejecución. Esto proporciona al código la oportunidad de corregir el error dentro de otro procedimiento. Por ejemplo, suponga que el Procedimiento A llama al Procedimiento B, y que el Procedimiento B llama al Procedimiento C. Si se produce un error en el Procedimiento C y éste no tiene activado el tratamiento de errores, Visual Basic comprueba el Procedimiento  B, y luego el Procedimiento A, para ver si hay un tratamiento de errores activado. Si existe uno, la ejecución pasa al tratamiento de errores. Si no, se detiene la ejecución y se muestra un mensaje de error.

Visual Basic también retrocede buscando por la lista de llamadas un tratamiento de errores cuando se produce un error dentro de un tratamiento de errores activo. Se puede forzar a que Visual Basic retroceda buscando por la lista de llamadas elevando un error del tratamiento de errores activo con el método Raise del objeto Err. Esto resulta útil para ocuparse en el tratamiento de errores de los errores que no anticipó. Si se produce un error no anticipado, y ese error se regenera dentro del tratamiento de errores, entonces la ejecución retrocede en la lista de llamadas para buscar otro tratamiento de errores, que puede haber sido establecido para tratar el error.

Por ejemplo, suponga que el Procedimiento C tiene activado un tratamiento de errores, pero que el tratamiento de errores no corrige el error que se ha producido. Una vez que el tratamiento de errores ha comprobado todos los errores que se anticiparon, puede regenerar el error original. La ejecución retrocede entonces por la lista de llamadas al tratamiento de errores del Procedimiento B, si es que existe, ofreciendo la oportunidad de que este tratamiento de errores corrija el error. Si no existiera tratamiento de errores en el Procedimiento B, o si no puede corregir el error y regenerarlo de nuevo, entonces la ejecución pasa al tratamiento de errores del Procedimiento A, suponiendo que exista uno.

Para ilustrar este concepto de otra forma, suponga que tiene un procedimiento anidado que incluye el tratamiento de errores para un tipo de error de no coincidencia de tipos, un error que había sido anticipado. En algún momento, en el Procedimiento C se produce un error de división por cero, que no se había anticipado. Si ha incluido una instrucción que regenere el error original, entonces la ejecución se pasa hacia atrás en la lista de llamadas a otro tratamiento de errores, si es que existe. Si en algún otro procedimiento de la lista de llamadas ha corregido un error de división por cero, entonces se corregirá el error. Si el código no regenera el error, entonces el procedimiento continúa la ejecución sin corregir el error de división por cero. Esto a su vez puede provocar otros errores dentro del conjunto de procedimientos anidados.

En resumen, Visual Basic hace una búsqueda hacia atrás en la lista de llamadas de un tratamiento de errores activado si:

•	Si se produce un error en un procedimiento que no incluye un tratamiento de errores activado.

•	Se produce un error dentro de un tratamiento de errores activo. Si se utiliza el método Raise del objeto Err para elevar un error, puede forzar a que Visual Basic busque hacia atrás en la lista de llamadas un tratamiento de errores activado.

Obtención de información acerca de un error

Una vez que la ejecución haya pasado a la rutina de tratamiento de errores, el código debe determinar qué error se ha producido y ocuparse de él. Visual Basic y Microsoft Access ofrecen varios elementos del lenguaje que puede usar para obtener información acerca de un error determinado. Cada uno de ellos es adecuado para distintos tipos de errores. Puesto que los errores pueden producirse en distintas partes de la aplicación, es necesario determinar cuál de ellos usar en el código basado en los errores que se anticiparon.

Los elementos del lenguaje disponibles para el tratamiento de errores incluyen:

•	El objeto Err.

•	El objeto Error y la colección Errors.

•	El método AccessError.

•	El evento Error.

El objeto Err

El objeto Err lo proporciona Visual Basic. Cuando se produce un error de Visual Basic, la información acerca de ese error se almacena en el objeto Err. El objeto Err mantiene información acerca de un sólo error cada vez. Cuando se produce un nuevo error, el objeto Err se actualiza para incluir la información acerca del nuevo error.

Para obtener información acerca de un error determinado, puede usar las propiedades y métodos del objeto Err. La propiedad Number es la propiedad predeterminada del objeto Err; devuelve el número identificativo del error que se produjo. La propiedad Descripción del objeto Err devuelve la cadena descriptiva asociada con un error de Visual Basic. El método Clear borra la información de error actual del objeto Err. El método Raise genera un error particular y rellena las propiedades del objeto Err con la información acerca de ese error.

El siguiente ejemplo muestra cómo usar el objeto Err en un procedimiento que puede provocar un error de no coincidencia de tipo:

Function PuedeProvocarUnError()

' Declarar constante para representar el posible error.

Const conTypeMismatch As Integer = 13

On Error GoTo Error_PuedeProvocarUnError

.	' Incluir código aquí que puede generar el error.

.

.

Exit_PuedeProvocarUnError:

Exit Function

Error_PuedeProvocarUnError:

' Comprobar propiedades del objeto Err.

If Err = conTypeMismatch Then

.	' Incluir código para tratar error.

.

.

Else

' Regenerar error original.

Dim entErrNum As Integer

entErrNum = Err

Err.Clear

Err.Raise entErrNum

End If

' Reanudar ejecución con rutina de salida para salir de función.

Resume Exit_PuedeProvocarUnError

End Function

Observe que en el ejemplo anterior, el método Raise se usa para regenerar el error original. Si se produjera otro error que no sea de no coincidencia de tipos, la ejecución retrocederá hacia atrás en la lista de llamadas a otro tratamiento de errores activado, si existe alguno.

El objeto Err ofrece toda la información necesaria acerca de los errores de Visual Basic. Sin embargo, no da información completa acerca de los errores de Microsoft Access o los errores del motor de base de datos Microsoft Jet. Microsoft Access y los objetos de acceso a datos (DAO) ofrecen, por su parte, elementos adicionales del lenguaje para ayudarle con esos errores.

El objeto Error y la colección Errors

El objeto Error y la colección Errors son ofrecidos por DAO. El objeto Error representa un error DAO. Una única operación DAO puede provocar varios errores, especialmente si está realizando operaciones ODBC. Cada error que se produce en una operación determinada de acceso a datos tiene asociado un objeto Error. Todos los objetos Error asociados con una operación DAO determinada se almacenan en la colección Errors, siendo el error de menor nivel el primer objeto de la colección y el error de mayor nivel el último objeto de la colección.

Cuando se produce un error DAO, el objeto Err de Visual Basic contiene el número de error del primer objeto de la colección Errors. Para determinar si se han producido errores DAO adicionales, compruebe la colección Errors. Los valores de las propiedades Number y Descripción del primer objeto Error de la colección Errors debe coincidir con los valores de las propiedades Number y Descripción del objeto Err de Visual Basic.

El método AccessError

El método Raise del objeto Err se utiliza para generar un error de Visual Basic que no ha ocurrido en realidad y determinar la cadena descriptiva asociada con ese error. Sin embargo, el método Raise no se puede utilizar para generar un error de Microsoft Access o de DAO. Para determinar la cadena descriptiva asociada con un error de Microsoft Access o un error de DAO que no hayan ocurrido en realidad, utilice el método AccessError.

El evento Error

El evento Error se utiliza para capturar errores que se producen en un formulario o informe de Microsoft Access. Por ejemplo, si un usuario intenta introducir texto en un campo cuyo tipo de datos es Fecha/Hora, se producirá el evento Error. Si agrega un procedimiento de evento Error a un formulario Empleados, y luego intenta introducir un valor de texto en el campo FechaContrato, se producirá un procedimiento de evento Error.

El procedimiento de evento Error toma un número entero de argumento, DataErr. Cuando se ejecuta un procedimiento de evento Error, el argumento DataErr contiene el número del error de Microsoft Access que se produjo. La única forma de determinar el número de error que se produjo es comprobar el valor del argumento DataErr dentro del procedimiento de evento. El objeto Err no se rellena con la información del error después de que se produzca el evento Error. Puede usar el valor del argumento DataErr junto al método AccessError para determinar el número de error y su cadena descriptiva.

Nota   La instrucción Error y la función Error se ofrecen sólo por motivos de compatibilidad con versiones anteriores. Cuando escriba nuevo código, use los objetos Err y Error, la función AccessError, y el evento Error para obtener información acerca de un error.


Evento Initialize

El evento Initialize para un módulo de clase se produce cuando se crea una instancia de ese módulo de clase.

Nota   Para ejecutar código cuando se produzca el evento Initialize, debe colocar ese código dentro del procedimiento de evento Initialize en un módulo de clase.

Comentarios

El evento Initialize ocurre cuando:

•	Se crea una nueva instancia de una clase directamente usando la palabra clave New.

•	Se crea una instancia de una clase indirectamente estableciendo o devolviendo una propiedad o aplicando un método definido en el módulo de clase.


Evento Initialize - Procedimiento de evento
Evento Initialize — Procedimiento de evento

Para crear el procedimiento de evento para el evento Initialize, abra el módulo de clase y elija Clase en el cuadro Objeto. Luego elija Initialize en el cuadro Procedimiento.

Sintaxis

Private Sub Class_Initialize( )

Comentarios

Puede usar este procedimiento de evento para ejecutar código cuando se crea una instancia de la clase, o para inicializar cualquier dato usado por la instancia de la clase.

El evento Initialize se produce cuando se crea una nueva instancia de una clase usando la palabra clave New. Por ejemplo, suponga que tiene una clase llamada CustomObject. Puede agregar una instrucción de declaración a un procedimiento de un módulo estándar que crea una nueva instancia de la clase CustomObject, como se muestra en el siguiente ejemplo:

Dim obj As New CustomObject

Cuando se ejecuta el procedimiento que contiene esta declaración, Visual Basic crea una nueva instancia de la clase CustomObject y luego se produce el evento Initialize.

El evento Initialize ocurre también cuando se crea una instancia de una clase al establecer o devolver una propiedad o al aplicar un método definido en el módulo de clase. Por ejemplo, suponga que ha definido un procedimiento Function llamado ListaNombres en el módulo de clase CustomObject. Para ejecutar esta función desde otro módulo, debe cualificarlo con el nombre del módulo de clase, como se muestra en el siguiente ejemplo:

CustomObject.ListaNombres

Al cualificar la función con el nombre del módulo de clase crea una instancia del módulo de clase, y luego se produce el evento Initialize.


Evento Terminate

El evento Terminate para un módulo de clase se produce cuando se eliminan de la memoria todas las referencias de una instancia de esa clase.

Nota   Para ejecutar código cuando se produce el evento Terminate, debe colocar ese código dentro del procedimiento de evento Terminate en un módulo de clase.

Comentarios

Este evento sólo se produce cuando elimina de memoria una referencia a una instancia de una clase.


Evento Terminate - Procedimiento de evento
Evento Terminate — Procedimiento de evento

Para crear el procedimiento de evento para el evento Terminate, abra el módulo de clase y haga clic en Clase en el cuadro Objeto. Luego elija Terminate en el cuadro Procedimiento.

Sintaxis

Private Sub Class_Terminate( )

Comentarios

Para eliminar de la memoria una referencia a una instancia de una clase, puede establecer la variable a la que se ha asignado esa referencia a Nothing. Por ejemplo, suponga que ha creado una instancia de una clase llamada CustomObject y la ha asignado a una variable de objeto llamada obj. Cuando se establece obj a Nothing, la referencia se elimina de la memoria. Una vez se hayan eliminado de la memoria todas las referencias a la instancia de la clase, se produce el evento Terminate.

Una referencia a una instancia de una clase será eliminada también de la memoria cuando la variable de objeto a la que se haya asignado se salga de alcance. Por ejemplo, si la variable está definida dentro de un procedimiento, se saldrá de alcance cuando el procedimiento finalice la ejecución. Si la variable se define al nivel de módulo en un módulo estándar, se saldrá de alcance cuando se restablezca el código. Si todas las referencias de una instancia de una clase se eliminan de esta forma, se produce también el evento Terminate.

El evento Terminate no se ejecuta si las instancias de una clase se eliminaron de la memoria porque Microsoft Access terminó de forma anormal. Por ejemplo, si el código llama al método Quit del objeto Application de Microsoft Access antes de eliminar de la memoria todas las instancias existentes de la clase, el evento Terminate no se ejecuta para esa clase.


Evento ApplyFilter

El evento ApplyFilter se produce cuando el usuario hace una de las acciones siguientes:

•	Hace clic en Aplicar filtro u ordenar del menú Registros en la vista Formulario, hace clic en Aplicar filtro u ordenar del menú Filtro en la ventana Filtros o hace clic en el botón Aplicar filtro [image] de la barra de herramientas. De esta forma se aplica el filtro recién creado (con la característica Filtro por formulario o con la ventana Filtro u orden avanzado).

•	En el menú Registros de la vista Formulario, el usuario apunta a Filtro y hace clic en Filtro por selección o hace clic en el botón Filtro por selección [image] de la barra de herramientas. De esta forma se aplica un filtro basándose en la selección activa en el formulario.

•	En el menú Registros de la vista Formulario, el usuario apunta a Filtro y hace clic en Filtrar excluyendo la selección. De esta forma se aplica un filtro excluyendo la selección actual en el formulario.

•	Hace clic en Quitar Filtro u ordenar del menú Registros en la vista Formulario o hace clic en el botón Quitar filtro [image] de la barra de herramientas. De esta forma se elimina cualquier orden o filtro que esté aplicado actualmente al formulario.

•	Hace clic en Filtro por selección, Filtro excluyendo la selección, Quitar filtro u ordenar o escribe un valor o una expresión en el cuadro Filtro para en el menú contextual cuando un control dependiente tiene el enfoque.

•	Cierra la ventana Filtro u orden avanzado o la ventana Filtro por formulario.

•	Hace clic en Filtro u orden avanzado del menú Filtro mientras está abierta la ventana Filtro por formulario o hace clic en Filtro por formulario del menú Filtro mientras está abierta la ventana Filtro u orden avanzado. De esta forma hace que se produzca el evento ApplyFilter cuando se cierra la ventana de filtro abierta y que luego se produzca el evento Filter al abrirse la otra ventana filtro.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produce este evento, establezca la propiedad OnApplyFilter al nombre de la macro o a [Procedimiento de evento].

El evento ApplyFilter se puede utilizar para:

•	Asegurarse de que es correcto el filtro que se está aplicando. Por ejemplo, quizás se desee asegurar que cualquier filtro que se aplique a un formulario Pedidos incluye criterios que restringen el campo FechaPedido. Para hacerlo, compruebe el valor de la propiedad Filtro (Filter) del formulario para asegurarse de que este criterio está incluido en la expresión de la cláusula WHERE.

•	Cambiar la presentación del formulario antes de que sea aplicado el filtro. Por ejemplo, cuando se aplica un filtro determinado, quizás se desee deshabilitar u ocultar ciertos campos que no son apropiados para los registros que muestra el filtro.

•	Deshacer o modificar acciones efectuadas cuando se ha producido el evento Filter. Por ejemplo, se pueden deshabilitar u ocultar algunos controles del formulario cuando el usuario está creando el filtro, porque no se desea que estos controles estén incluidos en los criterios del filtro. Luego se pueden habilitar o mostrar estos controles después de ser aplicado el filtro.

Las acciones de la macro o del procedimiento de evento ApplyFilter se producen antes de ser aplicado o eliminado el filtro o después de que se cierre la ventana Filtro u orden avanzado o Filtro por formulario, pero antes de que se vuelva a mostrar el formulario. Los criterios que se han introducido en el filtro recién creado están disponibles para la macro o el procedimiento de evento ApplyFilter como valor de la propiedad Filtro (Filter).

Nota   El evento ApplyFilter no se produce cuando el usuario hace una de las cosas siguientes:

•	Aplica o elimina un filtro utilizando las acciones AplicarFiltro, AbrirFormulario o MostrarTodosRegistros en una macro o utilizando sus métodos correspondientes del objeto DoCmd de Visual Basic, que son ApplyFilter, OpenForm y ShowAllRecords, respectivamente.

•	Utiliza la acción Cerrar o el método Close del objeto DoCmd para cerrar la ventana Filtro u orden avanzado o la ventana Filtro por formulario.

•	Establece la propiedad Filtro (Filter) o ActivarFiltro (FilterOn) en una macro o en Visual Basic (aunque estas propiedades se pueden establecer en una macro o procedimiento de evento ApplyFilter).


Evento ApplyFilter - Macros
Evento ApplyFilter — Macros

Para ejecutar una macro cuando se produce el evento ApplyFilter, establezca la propiedad AlAplicarFiltro (OnApplyFilter) al nombre de la macro.

Comentarios

Se puede comprobar un filtro o incluso modificar los criterios que ha introducido el usuario leyendo el valor de la propiedad Filtro (Filter) en una condición de la macro o estableciendo el valor de la propiedad con la acción EstablecerValor en una macro AplicarFiltro.

Se puede utilizar la acción CancelarEvento en una macro AplicarFiltro para cancelar la aplicación del filtro. Se puede utilizar una condición para comprobar el valor de uno o más controles del formulario y aplicar un filtro sólo cuando sea apropiado. Por ejemplo, si se selecciona una casilla de verificación PedidosPendientes en un formulario Pedidos, se podría aplicar un filtro para mostrar estos pedidos pendientes de los registros en el formulario. De lo contrario, se puede cancelar la aplicación del filtro y mostrar un mensaje que diga que no hay pedidos pendientes para mostrar.


Evento ApplyFilter - Procedimientos de evento
Evento ApplyFilter — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute al producirse el evento ApplyFilter, establezca la propiedad AlAplicarFiltro (OnApplyFilter) a [Procedimiento de evento] y haga clic en el botón Generar [image].

Sintaxis

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)

El procedimiento de evento ApplyFilter utiliza los argumentos siguientes.

Argumento	Descripción
Cancel	Este valor determina si se aplica el filtro. Establecer el argumento Cancel a True (–1) evita que se aplique el filtro. También se puede utilizar el método CancelEvent del objeto DoCmd para cancelar la aplicación del filtro.
ApplyType	Acción efectuada que hace que se produzca el evento ApplyFilter. El argumento ApplyType puede ser una de las constantes intrínsecas siguientes:
	Constante	Valor
	acShowAllRecords	0
	acApplyFilter	1
	acCloseFilterWindow	2
Comentarios

El procedimiento de evento ApplyFilter se puede utilizar para mostrar u ocultar, activar o desactivar ciertos controles del formulario cuando se aplica o elimina el filtro. Por ejemplo, cuando se aplica un filtro a un formulario Pedidos para mostrar sólo pedidos pagados, se pueden ocultar los campos CantidadDebida, Impuestos y TotalFactura cuando el argumento ApplyType es acApplyFilter y volver a mostrarlos luego cuando el argumento ApplyType es acShowAllRecords.

También se puede usar el procedimiento de evento ApplyFilter para deshacer acciones efectuadas al producirse el evento Filter. Este método es especialmente útil si el usuario ha cerrado la ventana Filtro sin crear un filtro cuando el argumento ApplyType es acCloseFilterWindow.


Evento ApplyFilter - Ejemplo de procedimientos de evento
Evento ApplyFilter — Ejemplo de procedimientos de evento

El ejemplo siguiente muestra cómo ocultar los controles CantidadDebida, Impuestos y TotalFactura de un formulario Pedidos cuando el filtro aplicado restringe los registros a sólo los pedidos pagados.

Para probar este ejemplo, agregue el procedimiento de evento siguiente a un formulario Pedidos que contenga los controles CantidadDebida, Impuestos y TotalFactura. Ejecute un filtro que liste sólo los pedidos pagados.

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)

If Not EsNulo(Me.Filtro) And (InCad(Me.Filtro, "Pedidos.Pagados = -1")>0 _

Or InCad(Me.Filtro, "Pedidos.Pagados = True")>0)Then

If ApplyFilter = acApplyFilter Then

Formularios!Pedidos!CantidadDebida.Visible = False

Formularios!Pedidos!Impuestos.Visible = False

Formularios!Pedidos!TotalFactura.Visible = False

ElseIf ApplyType = acShowAllRecords Then

Formularios!Pedidos!CantidadDebida.Visible = True

Formularios!Pedidos!Impuestos.Visible = True

Formularios!Pedidos!TotalFactura.Visible = True

End If

End If

End Sub


Evento Filter

El evento Filter se produce cuando el usuario hace una de las acciones siguientes:

•	En el menú Registros de la vista Formulario, apunta a Filtro y luego hace clic en Filtro por formulario o hace clic en el botón Filtro por formulario [image] de la barra de herramientas. De esta forma se abre la ventana Filtro por formulario, donde se puede crear rápidamente un filtro basado en los campos del formulario.

•	En el menú Registros de la vista Formulario, apunta a Filtro y luego hace clic en Filtro u orden avanzado. De esta forma se abre la ventana Filtro u orden avanzado, donde se pueden crear filtros complejos para el formulario.

•	Hace clic en la opción Filtro u orden avanzado del menú Filtro mientras está abierta la ventana Filtro por formulario o en el menú Filtro mientras está abierta la ventana Filtro u orden avanzado. De esta forma se produce el evento ApplyFilter al cerrar la ventana de filtro abierta y luego se produce el evento Filter al abrir la otra ventana filtro.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produce este evento, establezca la propiedad AlFiltrar (OnFilter) al nombre de la macro o [Procedimiento de evento].

El evento Filter se puede utilizar para:

•	Quitar cualquier filtro anterior del formulario. Para hacerlo, establezca la propiedad Filtro(Filter) del formulario a una cadena de longitud cero (" ") en la macro o el procedimiento de evento del filtro. Este método es especialmente útil cuando se desea asegurar que no van a aparecer criterios extraños en el nuevo filtro. Por ejemplo, siempre que se utiliza la característica Filtro por selección, el criterio que se usa (el texto seleccionado en el formulario) se agrega a la expresión de la cláusula WHERE de la propiedad Filtro (Filter) y aparece en la ventana Filtro por formulario y en la ventana Filtro u orden avanzado. Estos criterios antiguos se pueden eliminar utilizando el evento Filter.

•	Introducir valores predeterminados para el filtro nuevo. Para hacerlo, establezca la propiedad Filtro (Filter) a incluir estos criterios. Por ejemplo, quizás se desee que todos los filtros de un formulario Productos muestren sólo los productos actuales (productos para los que no está seleccionado el control Discontinuado del formulario Productos).

•	Utilizar una ventana de filtro personalizada en lugar de una de las ventanas de filtro de Microsoft Access. Cuando se produce el evento Filter, se puede abrir el formulario personalizado y utilizar las entradas de este formulario para establecer la propiedad Filtro (Filter) y filtrar el formulario original. Cuando el usuario cierra este formulario personalizado, establezca la propiedad ActivarFiltro (FilterOn) del formulario original a True (–1) para aplicar el filtro. Cancelar el evento Filter evita que se abra la ventana de filtro de Microsoft Access.

•	Evitar que aparezcan o se utilicen ciertos controles del formulario en la ventana Filtro por formulario. Si se oculta o deshabilita un control en una macro o procedimiento de evento de filtro, el control queda oculto o deshabilitado en la ventana Filtro por formulario y no se puede utilizar para establecer criterios de filtro. Luego se puede utilizar el evento ApplyFilter para mostrar o habilitar este control después de aplicar el filtro o cuando el filtro se quita del formulario.


Evento Filter - Macros
Evento Filter — Macros

Para ejecutar una macro cuando se produce el evento Filter, establezca la propiedad AlFiltrar (OnFilter) al nombre de la macro.

Comentarios

La propiedad Filtro (Filter) se puede establecer en una macro Filtro utilizando la acción EstablecerValor. Esto permite personalizar los criterios de filtro que ve el usuario cuando aparece la ventana Filtro por formulario o Filtro u orden avanzado.

Se puede utilizar la acción CancelarEvento en una macro Filtro para cancelar la apertura de la ventana de filtro.


Evento Filter - Procedimientos de evento
Evento Filter — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute al producirse el evento Filter, establezca la propiedad AlFiltrar (OnFilter) a [Procedimiento de evento] y haga clic en el botón Generar [image].

Sintaxis

Private Sub Form_Filter(Cancel As Integer, FilterType As Integer)

El procedimiento de evento Filter utiliza los argumentos siguientes.

Argumento	Descripción
Cancel	Su valor determina si se abre la ventana de filtro. Establecer el argumento Cancel a True (–1) evita que se abra la ventana de filtro. También se puede utilizar el método CancelEvent del objeto DoCmd para cancelar la apertura de la ventana de filtro.
FilterType	Ventana de filtro que intenta abrir el usuario. El argumento FilterType puede ser una de las constantes intrínsecas siguientes:
	Constante	Valor
	acFilterByForm	0
	acFilterAdvanced	1
Comentarios

El procedimiento de evento Filter se puede utilizar para deshabilitar u ocultar ciertos controles de la ventana Filtro por formulario, para evitar que se utilicen en los criterios de filtro. Por ejemplo, quizás desee que su formulario Pedidos muestre siempre registros que tienen un valor en el control TotalFactura, independientemente de lo pequeño que sea. Puede ocultar o deshabilitar este control en el procedimiento de evento Filter y luego habilitarlo o mostrarlo en el procedimiento de evento ApplyFilter. Para deshabilitar y ocultar controles de la ventana Filtro por formulario es mejor utilizar el procedimiento de evento Filter que la macro Filtro, porque se puede comprobar el argumento FilterType para ver si el usuario ha abierto la ventana Filtro por formulario. En la ventana Filtro u orden avanzado aparecen todos los campos de un formulario aunque los controles estén deshabilitados u ocultos.


Evento Filter - Ejemplo de procedimientos de evento
Evento Filter — Ejemplo de procedimientos de evento

El ejemplo siguiente muestra cómo deshabilitar el control TotalFactura de un formulario Pedidos cuando el usuario intenta crear un filtro, para que el usuario no pueda activar un filtro en este campo. Siempre aparecerán en el formulario filtrado todos los registros que tengan un valor en TotalFactura y que cumplan los otros criterios de filtro. Este ejemplo también obliga al usuario a utilizar la ventana Filtro por formulario y no la ventana Filtro u orden avanzado.

Para probar este ejemplo, agregue el siguiente procedimiento de evento a un formulario Pedidos que tenga un control TotalFactura. Pruebe a crear un filtro utilizando la ventana Filtro u orden avanzado que usa el control TotalFactura. También pruebe a crear el mismo filtro utilizando la ventana Filtro por formulario.

Private Sub Form_Filter(Cancel As Integer, FilterType As Integer)

If FilterType = acFilterByForm Then

Formularios!Pedidos!TotalFactura.Enabled = False

ElseIf FilterType = acFilterAdvanced Then

CuadroMsj "La mejor forma de filtrar este formulario es utilizar el " _

& "comando o el botón de la barra de herramientas Filtro por formulario.", vbOKOnly + vbInformation

Cancel = True

End If

End Sub


Evento NoData

El evento NoData se produce después de que Microsoft Access da formato para imprimir a un informe que no tiene datos (el informe es dependiente de un conjunto de registros en blanco), pero antes de imprimir el informe. Este evento se puede utilizar para cancelar la impresión de un informe en blanco.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produce este evento, establezca la propiedad AlNoDatos (OnNoData) al nombre de la macro o a [Procedimiento de evento].

Si el informe no es dependiente de una tabla o consulta (utilizando la propiedad OrigenDelRegistro (RecordSource)), no se produce el evento NoData.

Este evento se produce después que los eventos Format del informe, pero antes que el primer evento Print.

Este evento no se produce en subinformes. Si desea ocultar controles en un subinforme cuando éste no tiene datos, para que los controles no impriman en ese caso, puede utilizar la propiedad ContieneDatos (HasData) en una macro o en un procedimiento de evento que se ejecute al producirse el evento Format o Print.

El evento NoData se produce antes que el primer evento Page del informe.


Evento NoData - Macros
Evento NoData — Macros

Para ejecutar una macro cuando se produce el evento NoData, establezca la propiedad AlNoDatos (OnNoData) al nombre de la macro.

Comentarios

Puede utilizar la acción CancelarEvento en una macro SinDatos para cancelar la impresión del informe en blanco.


Evento NoData - Procedimientos de evento
Evento NoData — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute al producirse el evento NoData, establezca la propiedad AlNoDatos (OnNoData) a [Procedimiento de evento] y haga clic en el botón Generar [image].

Sintaxis

Private Sub Report_NoData(Cancel As Integer)

El procedimiento de evento NoData utiliza el argumento siguiente.

Argumento	Descripción
Cancel	Su valor determina si se imprime el informe. Establecer el argumento Cancel a True (–1) evita que se imprima el informe. También se puede utilizar el método CancelEvent del objeto DoCmd para cancelar la impresión del informe.


Evento NoData - Ejemplo de procedimientos de evento
Evento NoData — Ejemplo de procedimientos de evento

El ejemplo siguiente muestra cómo cancelar la impresión de un informe cuando no tiene datos. También se muestra un cuadro de mensaje que avisa al usuario de que se ha cancelado la impresión.

Para probar este ejemplo, agregue el procedimiento de evento siguiente a un informe. Pruebe a ejecutar el informe sin datos.

Private Sub Report_NoData(Cancel As Integer)

CuadroMsj "El informe no tiene datos." _

& "@Se ha cancelado la impresión. " _

& "@Compruebe el origen de los datos del informe para asegurarse de que ha " _

& "introducido los criterios correctos (por ejemplo, un intervalo válido  " _

& "de fechas).", vbOKOnly + vbInformation

Cancel = True

End Sub


Evento Page

El evento Page se produce después de que Microsoft Access da formato a una página de un informe para imprimirla, pero antes de imprimir la página. Este evento se puede utilizar para dibujar un borde alrededor de la página o para agregar otros elementos gráficos a la página.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produce este evento, establezca la propiedad AlPaginar (OnPage) al nombre de la macro o a [Procedimiento de evento].

Este evento se produce después de todos los eventos Format del informe y después de todos los eventos Print de la página, pero antes de imprimir realmente la página.

Normalmente se utilizan los métodos Line, Circle o PSet en el procedimiento de evento Page para crear los gráficos deseados para la página.

El evento NoData se produce antes que el primer evento Page del informe.


Evento Page - Macros
Evento Page — Macros

Para ejecutar una macro cuando se produce el evento Page, establezca la propiedad AlPaginar (OnPage) al nombre de la macro.

Comentarios

Como normalmente se usa el método Line, Circle o PSet en el procedimiento de evento Page para crear los gráficos deseados para la página, se suele utilizar el procedimiento de evento Page con este evento en lugar de la macro de página.

No se puede usar la acción CancelarEvento en una macro de Página.


Evento Page - Procedimientos de evento
Evento Page — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute al producirse el evento Page, establezca la propiedad AlPaginar (OnPage) a [Procedimiento de evento] y haga clic en el botón Generar [image].

Sintaxis

Private Sub Report_Page( )

Comentarios

El evento Page no se puede cancelar.


Evento Page - Ejemplo de procedimientos de evento
Evento Page — Ejemplo de procedimientos de evento

El ejemplo siguiente muestra cómo dibujar un rectángulo alrededor de una página de un informe utilizando el método Line. Las propiedades ScaleWidth y ScaleHeight devuelven de forma predeterminada el ancho y alto internos del informe.

Private Sub Report_Page()

Me.Line(0, 0)-(Me.ScaleWidth, Me.ScaleHeight), , B

End Sub


Evento ItemAdded

El evento ItemAdded se produce cuando se agrega una referencia al proyecto desde Visual Basic.

Notas

•	El evento ItemAdded se aplica a la colección References. No está asociado con un control, formulario o informe, como lo están la mayoría de los demás eventos. Por tanto, para poder crear una definición de procedimiento para el procedimiento de evento ItemAdded debe usar una sintaxis especial.

•	El evento ItemAdded sólo puede ejecutar un procedimiento de evento cuando se produce, pero no puede ejecutar una macro.

Comentarios

Este evento sólo se produce cuando se agrega una referencia desde el código. No se produce cuando se agrega una referencia desde el cuadro de diálogo Referencias, disponible al elegir Referencias en el menú Herramientas cuando la ventana Módulo es la ventana activa.


Evento ItemAdded - Procedimientos de evento
Evento ItemAdded — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento ItemAdded, siga los pasos incluidos en la sección Comentarios de este tema.

Sintaxis

Private Sub evtReferences_ItemAdded(reference)

El procedimiento de evento ItemAdded utiliza los siguientes argumentos.

Argumento	Descripción
evtReferences	Una variable de objeto que representa a la colección References. Debe declarar esta variable de objeto en un módulo de clase usando la palabra clave WithEvents.
reference	El objeto Reference que ha sido agregado a la colección References.
Comentarios

El procedimiento de evento ItemAdded puede contener código que desee ejecutar cuando se agregue al proyecto una referencia a una biblioteca de tipos. Puede agregar una referencia desde Visual Basic usando el método AddFromFile o AddFromGUID para agregar un objeto Reference a la colección References.

Para crear el procedimiento de evento ItemAdded:

1.	Usando la palabra clave WithEvents, declare una variable de objeto del tipo References en la sección Declaraciones de un módulo de clase. Microsoft Access usa esta variable de objeto para definir el procedimiento de evento para el evento ItemAdded. La siguiente línea de código muestra una declaración típica WithEvents:

Public WithEvents evtReferences As References

2.	Cree una definición de procedimiento de evento dentro del módulo de clase seleccionando el nombre de la variable de objeto References en el cuadro Objeto de la ventana Módulo. Por ejemplo, si usa la declaración mostrada en la etapa anterior, verá evtReferences en el cuadro desplegable Objeto. Luego, seleccione el evento ItemAdded en el cuadro Procedimiento.

3.	Agregue el código que se ejecutará cuando se produzca el evento. Por ejemplo, si desea mostrar un cuadro de mensaje que indique que se ha agregado una referencia al proyecto, agregue ese código al procedimiento de evento.

4.	Asigne la colección References a la variable de objeto References que declaró con la palabra clave WithEvents. Esta instrucción de asignación debe estar dentro de un procedimiento que se ejecute antes de que se produzca el evento ItemAdded.

Por ejemplo, podría incluir esta instrucción dentro del evento Initialize del módulo de clase en el que declaró la variable de objeto. Luego, cuando cree una instancia de la clase, la variable de objeto se inicializa automáticamente. Si está usando la variable de objeto evtReferences, este procedimiento de evento aparecería como sigue:

Private Sub Class_Initialize()

Set evtReferences = Application.References

End Sub

Nota   Si ha seguido las etapas anteriores para crear un procedimiento de evento para el evento ItemRemoved, no es necesario que los repita para el evento ItemAdded. Puede usar la misma variable de objeto References para ambos.

Para poder ejecutar el evento ItemAdded, debe crear la nueva referencia usando la variable de objeto References que declaró con la palabra clave WithEvents.

Para agregar una referencia y ejecutar el evento:

1.	En un módulo estándar, cree una nueva instancia de la clase dentro de la cual declaró la variable de objeto References. Por ejemplo, si el nombre de la clase es RefEvents, puede crear una nueva instancia de la clase y asignarla a una variable de objeto con la siguiente instrucción de declaración. Esta instrucción puede existir al nivel de módulo o dentro de un procedimiento.

Dim objRefEvents As New RefEvents

2.	En un procedimiento Sub o Function, cree un nuevo objeto Reference usando el método AddFromFile o AddFromGUID de la variable de objeto que representa a la colección References (evtReferences). Puesto que el evento ItemAdded del módulo de clase se define en asociación con una variable de objeto References particular, debe crear el nuevo objeto Reference usando esta variable. En caso contrario, el evento no se produciría.

Observe que debe cualificar la variable de objeto References con el nombre de la clase en la que se ha declarado.

Una vez ha completado todos los pasos anteriores, puede agregar una nueva referencia con un procedimiento como el siguiente:

Function AddReference(cadFileName As String)

Dim ref As Reference

' Crear nueva instancia de la clase RefEvents.

Dim objRefEvents As New RefEvents

' Crear referencia en la variable de colección References

' definida en la clase RefEvents.

Set ref = objRefEvents.evtReferences.AddFromFile(cadFileName)

End Function

Notas

•	El procedimiento que inicializa la variable de objeto References debe estar en el mismo alcance que la declaración de la variable de objeto. Por ejemplo, si declaró la variable de objeto References como Private dentro de un módulo de clase, debe inicializar la variable en un procedimiento dentro de ese mismo módulo de clase.

•	Sólo puede incluir el procedimiento de evento ItemAdded en un módulo de clase.

•	Una vez que declare una variable a nivel de módulo para que represente a la colección References, puede usar esa variable para crear definiciones de procedimientos de evento para los eventos ItemAdded y ItemRemoved.

•	Si tiene múltiples procedimientos de evento ItemAdded dentro de un proyecto individual, cada uno de ellos se ejecutará cuando se produzca el evento, pero no se ejecutarán en ningún orden especificado. Por tanto, se recomienda que sólo cree un procedimiento de evento ItemAdded en un proyecto y que incluya todo el código que deba ejecutarse cuando se produzca el evento, en ese procedimiento de evento.

•	El evento ItemAdded se produce después de que la referencia haya sido agregada al proyecto.


Ejemplos de procedimientos de evento Initialize, ItemAdded, ItemRemoved y Terminate

El siguiente ejemplo incluye procedimientos de evento para los eventos ItemAdded y ItemRemoved. Para probar este ejemplo, cree primero un nuevo módulo de clase haciendo clic en Módulo de clase en el menú Insertar. Pegue el siguiente código en el módulo de clase y guarde el módulo como RefEvents:

' Declarar variable de objeto para representar colección References.

Public WithEvents evtReferences As References

' Cuando haya creado instancia de clase, inicialice variable evtReferences.

Private Sub Class_Initialize()

Set evtReferences = Application.References

End Sub

' Cuando se elimina instancia, establecer evtReferences a Nothing.

Private Sub Class_Terminate()

Set evtReferences = Nothing

End Sub

' Mostrar mensaje cuando se agrega referencia.

Private Sub evtReferences_ItemAdded(ByVal Reference As Access.Reference)

MsgBox "Reference to " & Reference.Name & " added."

End Sub

' Mostrar mensaje cuando se elimina referencia.

Private Sub evtReferences_ItemRemoved(ByVal Reference As Access.Reference)

MsgBox "Reference to " & Reference.Name & " removed."

End Sub

El siguiente procedimiento Function agrega una referencia determinada. Cuando se agrega una referencia, se ejecuta el procedimiento de evento ItemAdded definido en la clase RefEvents.

Por ejemplo, para establecer una referencia al control calendar, podría pasar la cadena "C:\Windows\System\Mscal.ocx", si es ésta la ubicación correcta del control calendar de su equipo.

' Crear nueva instancia de la clase RefEvents.

Dim objRefEvents As New RefEvents

' Pasar nombre de archivo y ruta de acceso de biblioteca de tipos a este procedimiento.

Function AddReference(cadFileName As String) As Boolean

Dim ref As Reference

On Error GoTo Error_AddReference

' Crear nueva referencia sobre variable de objeto References.

Set ref = objRefEvents.evtReferences.AddFromFile(cadFileName)

AddReference = True

Exit_AddReference:

Exit Function

Error_AddReference:

MsgBox Err & ": " & Err.Description

AddReference = False

Resume Exit_AddReference

End Function

El siguiente procedimiento Function elimina una referencia determinada. Cuando se elimina una referencia, se ejecuta el procedimiento de evento ItemRemoved definido en la clase RefEvents.

Por ejemplo, para eliminar una referencia al control calendar, podría pasar la cadena "MSACAL", que es el nombre del objeto Reference que representa al control calendar.

Function RemoveReference(cadRefName As String) As Boolean

Dim ref As Reference

On Error GoTo Error_RemoveReference

' Devolver objeto que representa referencia existente.

Set ref = objRefEvents.evtReferences(cadRefName)

' Eliminar referencia de colección.

objRefEvents.evtReferences.Remove ref

RemoveReference = True

Exit_RemoveReference:

Exit Function

Error_RemoveReference:

MsgBox Err & ": " & Err.Description

RemoveReference = False

Resume Exit_RemoveReference

End Function


Evento ItemRemoved

El evento ItemRemoved se produce cuando se elimina una referencia del proyecto.

Notas

•	El evento ItemRemoved se aplica a la colección References. No está asociado con un control, formulario o informe, como lo están la mayoría de los demás eventos. Por tanto, para poder crear una definición de procedimiento para el procedimiento de evento ItemRemoved, debe usar una sintaxis especial.

•	El evento ItemRemoved sólo puede ejecutar un procedimiento de evento cuando se produce, no puede ejecutar una macro.

Comentarios

Este evento sólo se produce cuando se elimina una referencia del código. No se produce cuando se elimina una referencia del cuadro de diálogo Referencias, disponible al hacer clic en Referencias en el menú Herramientas cuando la ventana Módulo es la ventana activa.


Evento ItemRemoved - Procedimientos de evento
Evento ItemRemoved — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento ItemRemoved, siga los pasos incluidos en la sección Comentarios de este tema.

Sintaxis

Private Sub evtReferences_ItemRemoved(reference)

El procedimiento de evento ItemRemoved utiliza los siguientes argumentos.

Argumento	Descripción
evtReferences	Una variable de objeto que representa la colección References. Debe declarar esta variable de objeto en un módulo de clase utilizando la palabra clave WithEvents.
Reference	El objeto Reference que ha sido eliminado de la colección References.
Comentarios

El procedimiento de evento ItemRemoved puede contener el código que desee ejecutar cuando se elimine del proyecto una referencia a una biblioteca de tipos. Puede eliminar una referencia desde Visual Basic usando el método Remove para eliminar un objeto Reference de la colección References.

Para crear el procedimiento de evento ItemRemoved:

1.	Usando la palabra clave WithEvents, declare una variable de objeto del tipo References en la sección Declaraciones de un módulo de clase. Microsoft Access usa esta variable de objeto para definir el procedimiento de evento para el evento ItemRemoved. La siguiente línea de código muestra una típica declaración WithEvents:

Public WithEvents evtReferences As References

1.	Cree una definición de procedimiento de evento dentro del módulo de clase seleccionando el nombre de la variable de objeto References del cuadro Objeto en la ventana Módulo. Por ejemplo, si usa la declaración mostrada en el paso anterior, verá evtReferences en el cuadro desplegable Objeto. Luego seleccione el evento ItemRemoved en el cuadro Procedimiento.

1.	Agregue el código que deba ejecutarse cuando se produzca el evento. Por ejemplo, si desea mostrar un cuadro de mensaje que indique que se ha eliminado una referencia del proyecto, agregue ese código al procedimiento de evento.

1.	Asigne la colección References a la variable de objeto References que declaró con la palabra clave WithEvents. Esta instrucción de debe estar dentro de un procedimiento que se ejecute antes de que se produzca el evento ItemRemoved.

Por ejemplo, podría incluir esta instrucción dentro del evento Initialize del módulo de clase en el que declaró la variable de objeto. A continuación, cuando cree una instancia de la clase, la variable de objeto se inicializará de forma automática. Si está usando la variable de objeto evtReferences, este procedimiento de evento aparecería como sigue:

Private Sub Class_Initialize()

Set evtReferences = Application.References

End Sub

Nota   Si ya ha seguido los pasos anteriores para crear un procedimiento de evento para el evento ItemAdded, no es necesario que los repita para el evento ItemRemoved. Puede usar la misma variable de objeto References para ambos.

Para activar el evento ItemRemoved, debe eliminar la referencia existente usando la variable de objeto References que declaró con la palabra clave WithEvents.

Para eliminar una referencia y activar el evento:

1.	En un módulo estándar, cree una nueva instancia de la clase dentro de la cual declaró la variable de objeto References. Por ejemplo, si el nombre de la clase es RefEvents, puede crear una nueva instancia de la clase y asignarla a una variable de objeto con la siguiente instrucción de declaración. Esta instrucción puede existir al nivel de módulo o en un procedimiento.

Dim objRefEvents As New RefEvents

1.	En un procedimiento Sub o Function, cree un nuevo objeto Reference usando el método Remove de la variable de objeto que representa la colección References (evtReferences). Puesto que el evento ItemRemoved del módulo de clase se define en asociación con una variable de objeto References determinada, debe crear el nuevo objeto Reference usando esta variable. En caso contrario, el evento no se producirá.

Observe que debe cualificar la variable de objeto References con el nombre de la clase en la que se ha declarado.

Una vez haya finalizado todas las etapas anteriores, puede eliminar una referencia existente con un procedimiento como el siguiente:

Function RemoveReference(cadRefName As String)

Dim ref As Reference

' Crear una nueva instancia de la clase RefEvents.

Dim objRefEvents As New RefEvents

' Crear referencia en variable de colección References

' definida en clase RefEvents.

Set ref = objRefEvents.evtReferences(cadRefName)

objRefEvents.evtReferences.Remove ref

End Function

Notas

•	El procedimiento que inicializa la variable de objeto References debe estar dentro del mismo alcance que la declaración de la variable de objeto. Por ejemplo, si declaró la variable de objeto References como Private dentro de un módulo de clase, entonces debe inicializar la variable en un procedimiento dentro de ese mismo módulo de clase.

•	Sólo puede incluir el procedimiento de evento ItemRemoved en un módulo de clase.

•	Una vez que declare una variable a nivel de módulo para que represente a la colección References, puede usar esa variable para crear definiciones de procedimientos de evento para los eventos ItemAdded y ItemRemoved.

•	Si tiene múltiples procedimientos de evento ItemRemoved dentro de un único proyecto, cada uno de ellos se ejecutará cuando se produzca el evento, pero no se ejecutarán en ningún orden especificado. Por tanto, se recomienda que sólo cree un procedimiento de evento ItemRemoved en un proyecto y que incluya todo el código que deba ejecutarse cuando se produzca el evento en ese procedimiento de evento.

•	El evento ItemRemoved se produce después de que la referencia haya sido eliminada del proyecto.


Función Eval

Puede usar la función Eval para evaluar una expresión que da como resultado una cadena de texto o un valor numérico.

Puede crear una cadena y después evaluarla con la función Eval como si la cadena fuera realmente una expresión. La función Eval evalúa la expresión de cadena y devuelve su valor. Por ejemplo, Eval("1 + 1") devuelve 2.

Si pasa a la función Eval una cadena que contiene el nombre de una función, la función Eval devuelve el valor de retorno de esa función. Por ejemplo, Eval("Chr$(65)") devuelve "A".

Sintaxis

Eval(expresiónCadena)

El argumento expresiónCadena es una expresión que se evalúa como una cadena de texto alfanumérica. Por ejemplo, expresiónCadena puede ser una función que devuelve una cadena o un valor numérico. También puede ser una referencia a un control de un formulario. El argumento expresiónCadena debe evaluarse como una cadena o un valor numérico; no puede devolver un objeto de Microsoft Access.

Nota   Si desea pasar el nombre de una función a la función Eval, debe incluir paréntesis después del nombre de la función en el argumento stringexpr. Por ejemplo:

Debug.Print Eval("MostrarNombres()")	' MostrarNombres es una función definida por el usuario.

Debug.Print Eval("CadComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

Comentarios

Puede usar la función Eval en un control calculado de un formulario o un informe, o bien en una macro o un módulo. La función Eval devuelve un Variant que puede ser una cadena o un valor numérico.

El argumento expresiónCadena debe ser una expresión almacenada en una cadena. Si pasa a la función Eval una cadena que no contiene una expresión numérica o un nombre de función, sino sólo una simple cadena de texto, se produce un error en tiempo de ejecución. Por ejemplo, Eval("Pérez") da como resultado un error.

Puede usar la función Eval para determinar el valor almacenado en la propiedad Valor (Value) de un control. El siguiente ejemplo solicita al usuario la referencia completa a un control y pasa esa cadena a la función Eval. A continuación devuelve el valor actual del control en un cuadro de diálogo.

Dim ctl As Control, cadCtl As String

Set ctl = Forms!Empleados!Apellidos

Set cadCtl = "Forms!Empleados!Apellidos"

MsgBox ("El valor actual de " & ctl.Name & " es " & Eval(cadCtl))

Puede utilizar la función Eval para tener acceso a operadores de expresiones que normalmente no están disponibles en Visual Basic. Por ejemplo, los operadores SQL Entre...Y o En no se pueden usar directamente en el código, pero sí los puede usar en una expresión pasada a la función Eval.

El siguiente ejemplo determina si el valor de un campo Región destinatario del formulario Pedidos es una de las abreviaturas especificadas para el estado. Si el campo contiene una de las siguientes abreviaturas, entonces EstadoEnt será Verdadero (True) (–1). Observe el uso del signo de comilla tipográfica (‘) para incluir una cadena dentro de otra cadena.

Dim EstadoEnt As Integer

EstadoEnt = Eval("Formularios!Pedidos!RegiónEnvío En "

& "(‘AK’, ‘CA’, ‘ID’, ‘WA’, ‘MT’, ‘NM’, ‘OR’)")


Ejemplo de la función Eval

El siguiente ejemplo supone que tiene una serie de 50 funciones definidas como A1, A2 y así sucesivamente. Este ejemplo utiliza la función Eval para llamar a cada función de la serie.

Sub CallSeries()

Dim entI As Integer

For entI = 1 To 50

Eval("A" & entI & "()")

Next entI

End Sub

El siguiente ejemplo desencadena un evento Click como si el usuario hubiese hecho clic en un botón de un formulario. Si el valor de la propiedad AlHacerClic (OnClick) del botón comienza con un signo igual (es decir, que es el nombre de una función), la función Eval llama a la función, lo que equivale a activar el evento Click. Si el valor no comienza con un signo igual, entonces el valor debe indicar el nombre de una macro. El método RunMacro del objeto DoCmd ejecuta en ese caso la macro indicada.

Dim ctl As Control, varTemp As Variant

Set ctl = Formularios!Contacto!HelpButton

If (Left(ctl.OnClick, 1) = "=") Then

varTemp = Eval(Mid(ctl.OnClick,2))

Else

DoCmd.RunMacro ctl.OnClick

End If


Función UsuarioActual (CurrentUser)

Puede usar la función UsuarioActual (CurrentUser) para devolver el nombre del usuario actual de la base de datos.

Por ejemplo, use la función UsuarioActual (CurrentUser) en un procedimiento que realiza un seguimiento de los usuarios que modifiquen la base de datos.

Sintaxis

UsuarioActual()

CurrentUser()

Comentarios

La función UsuarioActual (CurrentUser) devuelve una cadena que contiene el nombre de la cuenta de usuario actual.

Si no ha establecido un grupo de trabajo asegurado, la función UsuarioActual (CurrentUser) devuelve el nombre de la cuenta de usuario predeterminada, Administrador. La cuenta de usuario Administrador proporciona al usuario permiso total para todos los objetos de la base de datos.

Si ha activado la seguridad de grupo de trabajo, la función UsuarioActual (CurrentUser) devuelve el nombre de la cuenta de usuario actual. Para las cuentas de usuario que no sean la del Administrador puede especificar permisos que restringen el acceso del usuario a los objetos de la base de datos.

El siguiente ejemplo muestra cómo obtener el nombre del usuario actual y lo presenta en un cuadro de diálogo.

MsgBox("El usuario actual es: " & CurrentUser)


Función Comando (Command)

Se puede utilizar la función Comando (Command) para devolver la parte de argumentos de la línea de comandos utilizada para iniciar Microsoft Access.

Sintaxis

Comando

Command

Comentarios

Cuando se inicia Microsoft Access desde la línea de comandos, cualquier parte de la línea de comandos que siga a la opción /cmd se pasa al programa como el argumento de la línea de comandos. Se puede usar la función Comando (Command) para devolver el argumento que se ha pasado.

Para cambiar un argumento de línea de comandos una vez que se ha abierto una base de datos, haga clic en Opciones en el menú Herramientas. En la ficha Avanzado del cuadro de diálogo Opciones, introduzca un argumento nuevo en el cuadro Argumentos de la línea de comandos. La función Comando (Command) devolverá ahora el nuevo argumento que se haya introducido.

Cuando la función Comando (Command) se utiliza en cualquier otra parte que no sea el código Visual Basic en un módulo, se deben incluir paréntesis en blanco después de la función. Por ejemplo, para utilizar la función Comando (Command) en un cuadro de texto de un formulario, configure la propiedad OrigenDelControl (ControlSource) del cuadro de texto a una expresión como la siguiente:

= Command()


Ejemplo de la función Comando (Command)

El siguiente ejemplo muestra cómo iniciar Microsoft Access con un argumento de línea de comandos; luego muestra cómo devolver el valor de este argumento utilizando la función Comando (Command).

Para probar este ejemplo, haga clic en el botón Iniciar de Windows y en Ejecutar. Introduzca lo siguiente en el cuadro de diálogo Ejecutar, en una sola línea. (Ha de poner las partes de la información de la línea de comandos entre comillas).

"C:\Archivos de programa\Microsoft Office\Office\Msaccess.exe" "C:\Archivos de programa \Microsoft Office\Office\Ejemplos\Neptuno.mdb"/cmd "Pedidos"

A continuación, abra un módulo nuevo en la base de datos de ejemplo Neptuno y agregue la siguiente función.

Function ComprobarLíneaComando()

' Comprobar valor devuelto por la función Comando.

If Commando = "Pedidos" Then

DoCmd.AbrirFormulario "Pedidos"

ElseIf Commando = "Empleados" Then

DoCmd.AbrirFormulario "Empleados"

Else

Exit Function

End If

End Function

Cuando se llama a esta función, Microsoft Access abre el formulario Pedidos.

Se puede crear una macro llamada AutoExec para llamar a esta función automáticamente al abrir la base de datos. Para obtener más información sobre cómo llevar a cabo una acción cuando se abre una base de datos, consultar Llevar a cabo una acción la primera vez que se abre la base de datos.


Función CurrentDb

La función CurrentDb devuelve una variable de objeto del tipo Database que representa la base de datos abierta actualmente en la ventana Microsoft Access.

Sintaxis

CurrentDb

Comentarios

Con el objeto de manipular desde Visual Basic la estructura y los datos de su base de datos, debe utilizar Objetos de acceso a datos (DAO). La función CurrentDb ofrece una forma de tener acceso a la base de datos activa desde el código Visual Basic sin que sea necesario conocer el nombre de la base de datos. Una vez que tenga una variable que apunta a la base de datos activa, puede también tener acceso y manipular otros objetos y colecciones en la jerarquía DAO.

Se puede utilizar la función CurrentDb para crear variables de objetos múltiples que hacen referencia a la base de datos activa. En el siguiente ejemplo, las variables dbsA y dbsB se refieren a la base de datos activa:

Dim dbsA As Database, dbsB As Database

Set dbsA = CurrentDb

Set dbsB = CurrentDb

Nota   En las versiones anteriores de Microsoft Access, puede que haya utilizado la sintaxis DBEngine.Workspaces(0).Databases(0) o DBEngine(0)(0) para devolver un puntero a la base de datos activa. En Microsoft Access 97 debe utilizar, por el contrario, la función CurrentDb. La función CurrentDb crea otra instancia de la base de datos activa, mientras que la sintaxis DBEngine(0)(0) hace referencia a la copia abierta de la base de datos activa. La utilización de la función CurrentDb permite crear más de una variable del tipo Database que haga referencia a la base de datos activa. Microsoft Access permite todavía la sintaxis DBEngine(0)(0), pero debe considerar realizar  modificaciones en su código en orden a evitar posibles conflictos en una base de datos multiusuario.

Si desea trabajar con otra base de datos al mismo tiempo que la base de datos activa está abierta en la ventana Microsoft Access, utilice el método OpenDatabase de un objeto Workspace. El método OpenDatabase, en realidad, no abre la segunda base de datos en la ventana Microsoft Access; simplemente devuelve una variable Database que representa a la segunda base de datos. El siguiente ejemplo devuelve un puntero a la base de datos activa y a la base de datos llamada Contactos.mdb:

Dim dbsActiva As Database, dbsContactos As Database

Set dbsActiva = CurrentDb

Set dbsContactos = DBEngine.Workspaces(0).OpenDatabase("Contactos.mdb")


Ejemplo de la función CurrentDb

El siguiente ejemplo utiliza la función CurrentDb para devolver una variable de Objeto de base de datos que apunta a la base de datos activa. Luego hace una relación de todos los campos de la tabla Empleados de esa base de datos.

Sub EnumerarCampos ()

Dim dbs As Database, tdf As TableDef, fld As Field

' Devuelve la variable de objeto de base de datos que apunta a la base de datos activa.

Set dbs = CurrentDb

' Devuelve variable de objeto TableDef que apunta a tabla Empleados.

Set tdf = dbs.TableDefs!Empleados

' Relaciona campos en la tabla Empleados.

For Each fld In tdf.Fields

Debug.Print fld.Nombre

Next fld

End Sub


Función HyperlinkPart

La función HyperlinkPart devuelve información acerca de los datos almacenados como tipo de datos Hipervínculo. Los datos en un campo Hipervínculo pueden contener hasta tres partes con el siguiente formato:

textopresentación#dirección#subdirección

Sintaxis

objeto.HyperlinkPart(hipervínculo As Variant[, parte As Integer])

La función HyperlinkPart utiliza los siguientes argumentos.

Argumento	Descripción
objeto	Opcional. El objeto Application.
hipervínculo	Un Variant que representa los datos almacenados en un campo Hipervínculo.
parte	Opcional. El valor del argumento parte es una constante intrínseca que representa la información que desea que sea devuelta por la función HyperlinkPart:
	Constante	Valor	Descripción
	acDisplayedValue	0	(Predeterminado) El texto subrayado que se muestra en un hipervínculo.
	acDisplayText	1	La parte textopresentación de un campo Hipervínculo.
	acAddress	2	La parte dirección de un campo Hipervínculo.
	acSubAddress	3	La parte subdirección de un campo Hipervínculo.
Comentarios

La función HyperlinkPart se utiliza para devolver uno de los tres valores de un campo Hipervínculo o el valor mostrado. El valor devuelto depende del valor del argumento parte. El argumento parte es opcional. Si no se utiliza, la función devuelve el valor que Microsoft Access muestra para el hipervínculo (que se corresponde al valor acDisplayedValue del argumento parte). Los valores devueltos pueden ser una de las tres partes del campo Hipervínculo (textopresentación, dirección, o subdirección) o el valor que muestra Microsoft Access para el hipervínculo.

Nota   Si utiliza la función HyperlinkPart en una consulta, el argumento parte es obligatorio y no puede usar las constantes enumeradas anteriormente, sino que por el contrario debe usar el valor actual.

Cuando se proporciona un valor en la parte textopresentación de un campo Hipervínculo, el valor mostrado por Microsoft Access será el del valor textopresentación. Cuando no hay ningún valor en la parte textopresentación de un campo Hipervínculo, el valor mostrado será la parte dirección o subdirección del campo Hipervínculo, dependiendo del valor que se presenta primero en el campo.

La siguiente tabla muestra los valores devueltos por la función HyperlinkPart para los datos almacenados en un campo Hipervínculo.

Datos del campo Hipervínculo	Valores devueltos por la función HyperlinkPart
#http://www.microsoft.com#	acDisplayedValue: http://www.microsoft.com acDisplayText: acAddress: http://www.microsoft.com acSubAddress:
Microsoft#http://www.microsoft.com#	acDisplayedValue: Microsoft acDisplayText: Microsoft acAddress: http://www.microsoft.com acSubAddress:
Clientes##Formulario Clientes	acDisplayedValue: Customers acDisplayText: Customers acAddress: acSubAddress: Formulario Clientes
##Formulario Clientes	acDisplayedValue: Formulario Clientes acDisplayText: acAddress: acSubAddress: Formulario Clientes
Cuando se agrega una parte dirección a un campo Hipervínculo usando el cuadro de diálogo Insertar hipervínculo (disponible al hacer clic en Hipervínculo en el menú Insertar) o escribiendo una dirección directamente en un campo Hipervínculo, Microsoft Access agrega los dos símbolos # que delimitan las partes de los datos del hipervínculo.

Puede agregar o modificar la parte textopresentación de un campo hipervínculo haciendo clic con el botón secundario en un hipervínculo de una tabla, apuntar a Hipervínculo en el menú contextual, y luego escribir el texto de presentación en el cuadro Mostrar texto.

Cuando se agregan datos directamente a un campo hipervínculo o usando métodos de DAO, debe incluir los dos símbolos # para delimitar las partes de los datos del hipervínculo.


Ejemplo de la función HyperlinkPart

El siguiente ejemplo utiliza las cuatro constantes del argumento parte para mostrar la información devuelta por la función HyperlinkPart para cada registro de una tabla que contenga un campo Hipervínculo. Para probar este ejemplo, pegue el procedimiento MostrarPartesDeHipervínculo en la sección de Declaraciones de un módulo. Puede llamar al procedimiento MostrarPartesDeHipervínculo desde la ventana Depuración, pasando al mismo el nombre de una tabla que contenga hipervínculos y el nombre del campo que contenga los datos del Hipervínculo. Por ejemplo:

mostrarPartesDeHipervínculo "NombreDeMiTablaHipervínculo", "NombreCampoMiHipervínculo"

Sub MostrarPartesDeHipervínculo(cadTable As String, cadField As String)

Dim dbs As Database, rst As Recordset

Dim cadMsg As String

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset(cadTable)

While Not rst.EOF	' Para cada registro de tabla.

cadMsg = "DisplayValue = " & HyperlinkPart(rst(cadField), acDisplayedValue) _

& vbCrLf & "DisplayText = " & HyperlinkPart(rst(cadField), acDisplayText) _

& vbCrLf & "Address = " & HyperlinkPart(rst(cadField), acAddress) _

& vbCrLf & "SubAddress = " & HyperlinkPart(rst(cadField), acSubAddress)

' Mostrar partes devueltas por la función HyperlinkPart.

MsgBox cadMsg

rst.MoveNext

Wend

End Sub

Cuando la función HyperlinkPart se utiliza en una consulta, el argumento parte es obligatorio. Por ejemplo, la siguiente instrucción SQL utiliza la función HyperlinkPart para devolver información acerca de los datos almacenados como tipo de datos Hipervínculo en un campo de dirección URL de la tabla Vínculos:

SELECT Links.URL, HyperlinkPart([URL],0)

AS Display, HyperlinkPart([URL],1)

AS Name, HyperlinkPart([URL],2)

AS Addr, HyperlinkPart([URL],3) AS SubAddr

FROM Links;


Acciones agrupadas por tarea

La siguiente tabla agrupa las acciones en categorías basadas en su utilización.

Categoría	Tarea	Acción
Datos de formularios e informes	Restringe datos	AplicarFiltro
	Se mueve por los datos	BuscarRegistro, BuscarSiguiente, IrAControl, IrAPágina, IrARegistro
Ejecución	Ejecuta un comando	EjecutarComando
	Sale de Microsoft Access	Salir
	Ejecuta una macro, procedimiento o consulta	AbrirConsulta, EjecutarCódigo, EjecutarMacro, EjecutarSQL
	Ejecuta otra aplicación	EjecutarAplicación
	Detiene la ejecución	CancelarEvento, DetenerTodasMacros, DetenerMacro, Salir
Importar/exportar	Envía objetos Microsoft Access a otras aplicaciones	EnviarObjeto, SalidaHacia
	Transfiere datos entre formatos de datos de Microsoft Access y otros	TransferirBaseDatos, TransferirHojaCálculo, TransferirTexto
Manipulación de objetos	Copia, guarda o cambia el nombre de un objeto	CambiarNombre, CopiarObjeto, Guardar
	Elimina un objeto	EliminarObjeto
	Mueve o cambia el tamaño de una ventana	DesplazarTamaño, Maximizar, Minimizar, Restaurar
	Abre o cierra un objeto	AbrirConsulta, AbrirFormulario, AbrirInforme, AbrirMódulo, AbrirTabla, Cerrar
	Imprime un objeto	AbrirConsulta, AbrirFormulario, AbrirInforme, Imprimir
	Selecciona un objeto	SeleccionarObjeto
	Establece el valor de un campo, control o propiedad	EstablecerValor
	Actualiza datos o la pantalla	MostrarTodosRegistros, NuevaConsulta, RepintarObjeto
Diversos	Crea una barra de menús personalizada, un menú contextual personalizado, una barra de menús global, o menú contextual global	AgregarMenú
	Establece el estado de los elementos de menú en una barra de menús personalizada o en una barra de menús global	EstablecerElementoDelMenú
	Muestra información por la pantalla	CuadroMsj, Eco, EstablecerAdvertencias, RelojDeArena
	Genera pulsaciones de teclas	EnviarTeclas
	Muestra u oculta la barra de comandos incorporada o personalizada	MostrarBarraDeHerramientas
	Produce un aviso sonoro	Bip


Referencia de eventos y propiedades de los eventos

La siguiente referencia agrupa a los eventos en categorías basado en el tipo de tarea y enumera los eventos alfabéticamente.

Agrupados por tareas

Eventos de datos	Eventos de impresión
Eventos de enfoque	Eventos del mouse
Eventos de error y de sincronización	Eventos de teclado
Eventos de filtro	Eventos de ventana
Por orden alfabético

Evento	Propiedad del evento
Activate	AlActivar (OnActivate)
AfterDelConfirm	DespuésDeConfirmarEliminación (AfterDelConfirm)
AfterInsert	DespuésDeInsertar (AfterInsert)
AfterUpdate	DespuésDeActualizar (AfterUpdate)
ApplyFilter	AlAplicarFiltro (OnApplyFilter)
BeforeDelConfirm	AntesDeConfirmarEliminación (BeforeDelConfirm)
BeforeInsert	AntesDeInsertar (BeforeInsert)
BeforeUpdate	AntesDeActualizar (BeforeUpdate)
Change	AlCambiar (OnChange)
Click	AlHacerClic (OnClick)
Close	AlCerrar (OnClose)
Current	AlActivarRegistro (OnCurrent)
DblClick	AlHacerDobleClic (OnDblClick)
Deactivate	AlDesactivar (OnDeactivate)
Delete	AlEliminar (OnDelete)
Enter	AlEntrar (OnEnter)
Error	AlOcurrirError (OnError)
Exit	AlSalir (OnExit)
Filter	AlFiltrar (OnFilter)
Format	AlDarFormato (OnFormat)
GotFocus	AlRecibirEnfoque (OnGotFocus)
Initialize	ninguna
ItemAdded	ninguna
ItemRemoved	ninguna
KeyDown	AlBajarTecla (OnKeyDown)
KeyPress	AlPresionarTecla (OnKeyPress)
KeyUp	AlSubirTecla (OnKeyUp)
Load	AlCargar (OnLoad)
LostFocus	AlPerderEnfoque (OnLostFocus)
MouseDown	AlBajarMouse (OnMouseDown)
MouseMove	AlMoverMouse (OnMouseMove)
MouseUp	AlSubirMouse (OnMouseUp)
NoData	AlNoDatos (OnNoData)
NotInList	AlNoEnLaLista (OnNotInList)
Open	AlAbrir (OnOpen)
Page	AlPaginar (OnPage)
Print	AlImprimir (OnPrint)
Resize	AlCambiarTamaño (OnResize)
Retreat	AlRetirarse (OnRetreat)
Terminate	ninguna
Timer	AlCronómetro (OnTimer)
Unload	AlDescargar (OnUnload)
Updated	AlActualizar (OnUpdated)


Eventos de datos

Los eventos de datos ocurren cuando se introducen, eliminan o cambian datos en un formulario o control, o cuando el enfoque se mueve desde un registro a otro.

Evento	Propiedad del evento	Ocurrencia
AfterDelConfirm	DespuésDeConfirmarEliminación (AfterDelConfirm) (formularios)	Después de confirmar la eliminación de los registros y los registros sean realmente eliminados o después de que la eliminación sea cancelada.
AfterInsert	DespuésDeInsertar (AfterInsert) (formularios)	Después de que se haya agregado un nuevo registro a la base de datos.
AfterUpdate	DespuésDeActualizar (AfterUpdate) (formularios, controles)	Después de que un control o registro sea actualizado con el dato cambiado. Este evento ocurre cuando el control o el registro pierde el enfoque, o se hace clic en Guardar registro en el menú Registros. Este evento ocurre para los registros nuevos y los existentes.
BeforeDelConfirm	AntesDeConfirmarEliminación (BeforeDelConfirm) (formularios)	Después de que uno o más registros hayan sido eliminados, pero antes de que Microsoft Access muestre un cuadro de diálogo pidiéndole que confirme o cancele la eliminación. Este evento ocurre después del evento Delete.
BeforeInsert	AntesDeInsertar (BeforeInsert) (formularios)	Cuando se escribe el primer carácter de un nuevo registro, pero antes de que se haya agregado el registro a la base de datos.
BeforeUpdate	AntesDeActualizar (BeforeUpdate) (formularios, controles)	Antes de que un control o registro sea actualizado con el dato modificado. Este evento ocurre cuando el control o registro pierde el enfoque o se haga clic en Guardar registro en el menú Registros. Este evento ocurre para los registros nuevos y los existentes.
Change	AlCambiar (OnChange) (controles)	Cuando cambia el contenido de un cuadro de texto o la parte de cuadro de texto de un cuadro combinado; por ejemplo, cuando se escribe un carácter en el control o se cambia la propiedad Texto del control usando una macro o Visual Basic.
Current	AlActivarRegistro (OnCurrent) (formularios)	Cuando el enfoque se mueve a un registro, haciéndolo el registro activo o cuando se hace una NuevaConsulta al origen de datos de un formulario. Este evento ocurre cuando se abre por primera vez un formulario, y en el momento en el que el enfoque abandona a un registro y se mueve a otro. También ocurre cuando se realiza de nuevo una consulta al origen de datos de un formulario; por ejemplo, cuando se hace clic en Quitar filtro u ordenar en el menú Registros o se utiliza la acción MostrarTodosRegistros o la acción NuevaConsulta.
Delete	AlEliminar (OnDelete) (formularios)	Cuando se elimina un registro, pero antes de confirmar la eliminación y de que sea realizada realmente.
NotInList	AlNoEnLaLista (OnNotInList) (controles)	Cuando se introduce un valor en un cuadro combinado que no está en la lista del cuadro combinado.
Updated	AlActualizar (OnUpdated) (controles)	Cuando ha sido modificado el dato de un objeto OLE.


Eventos de error y de sincronización

Los siguientes eventos se utilizan para el tratamiento de los errores y la sincronización de los datos en los formularios o informes.

Evento	Propiedad del evento	Ocurrencia
Error	AlOcurrirError (OnError) (formularios, informes)	Cuando se produce un error en tiempo de ejecución en Microsoft Access mientras se esté en el formulario o informe. Esto incluye a los errores del motor de base de datos Microsoft Jet, aunque no los errores en tiempo de ejecución de Visual Basic. (Puesto que las macros no pueden determinar qué error ha ocurrido, con este evento se utilizan normalmente procedimientos de evento de Visual Basic.)
Timer	AlCronómetro (OnTimer) (formularios)	Cuando pasa un intervalo especificado de tiempo, según se especifique en la propiedad IntervaloDeCronómetro (TimerInterval) del formulario. Se puede utilizar el evento Timer para mantener los datos sincronizados en un entorno multiusuario haciendo una nueva consulta o actualizando los datos a intervalos especificados.


Eventos de filtro

Los eventos de filtro ocurren cuando se aplica o se crea un filtro en un formulario.

Evento	Propiedad del evento	Ocurrencia
ApplyFilter	AlAplicarFiltro (OnApplyFilter) (formularios)	Cuando se hace clic en Aplicar filtro u ordenar en el menú Registros o se hace clic en el botón Aplicar filtro en la barra de herramientas. Esto se aplica al filtro que se haya creado más recientemente (creado usando la característica Filtro por formulario o la ventana Filtro u orden avanzado). Cuando se hace clic en Filtro por selección después de haber apuntado a Filtro en el menú Registros o haciendo clic en el botón Filtro por selección en la barra de comandos. Esto se aplica al filtro basado en la selección actual del formulario. Cuando se hace clic en Quitar filtro u ordenar en el menú Registros o se hace clic en el botón Quitar filtro en la barra de comando. Esto elimina cualquier filtro (u ordenación) que se esté aplicando en la actualidad al formulario. Cuando se cierra la ventana Filtro u orden avanzado o la ventana Filtro por formulario.
Filter	AlFiltrar (OnFilter) (formularios)	Cuando se hace clic en Filtro por formulario después de apuntar a Filtro en el menú Registros o se hace clic en el botón Filtro por formulario en la barra de comando. Esto abre la ventana Filtro por Formulario, donde se puede crear rápidamente un filtro basado en los campos del formulario. Cuando se hace clic en Filtro u orden avanzado después de apuntar a Filtro en el menú Registros. Esto abre la ventana Filtro u orden avanzado, donde se pueden crear filtros complejos para el formulario.


Eventos de enfoque

Los eventos de enfoque ocurren cuando un formulario o control pierde o recibe el enfoque, o un formulario o informe se convierte en activo o inactivo.

Evento	Propiedad del evento	Ocurrrencia
Activate	AlActivar (OnActivate) (formularios, informes)	Cuando un formulario o informe se convierte en la ventana activa.
Deactivate	AlDesactivar (OnDeactivate) (formularios, informes)	Cuando una ventana diferente de Microsoft Access se convierte en la ventana activa, pero antes de que lo haga. El evento Deactivate no ocurre cuando el enfoque se mueve a la ventana de otra aplicación, a un cuadro de diálogo o un formulario emergente.
Enter	AlEntrar (OnEnter) (controles)	Antes de que un control reciba el enfoque, bien desde un control en el mismo formulario o cuando se abre el formulario. Este evento ocurre antes que el evento GotFocus.
Exit	AlSalir (OnExit) (controles)	Justamente antes de que un control pierda el enfoque hacia otro control en el mismo formulario. Este evento ocurre antes del evento LostFocus.
GotFocus	AlRecibirEnfoque (OnGotFocus) (formularios, controles)	Cuando un control o un formulario con controles no activos recibe el enfoque. Un formulario sólo puede recibir el enfoque si todos los controles visibles de un formulario están desactivados o no hay controles en el formulario.
LostFocus	AlPerderEnfoque (OnLostFocus) (formularios, controles)	Cuando un formulario o control pierde el enfoque. Un formulario sólo puede tener el enfoque si todos los controles visibles en un formulario están desactivados o no hay controles en el formulario.


Eventos de teclado

Los eventos de teclado ocurren cuando se escribe en un teclado o cuando se envían pulsaciones usando la acción EnviarTeclas o la instrucción SendKeys.

Evento	Propiedad del evento	Ocurre
KeyDown	AlBajarTecla (OnKeyDown) (formularios, controles)	Cuando se presiona cualquier tecla en el teclado mientras un control o formulario tiene el enfoque. Un formulario sólo puede tener el enfoque si están desactivados todos los controles visibles en el formulario o no hay controles en el formulario. El evento KeyDown ocurre también si se envía una pulsación a un formulario o control usando la acción EnviarTeclas en una macro o la instrucción SendKeys en Visual Basic. Un formulario recibe también todos los eventos KeyDown (incluso los de los controles) antes de que ocurran para los controles si se establece la propiedad TeclaDePresentaciónPreliminar (KeyPreview) del formulario a Sí. Si se mantiene presionada una tecla, el evento KeyDown ocurrirá repetidamente.
KeyPress	AlPresionarTecla (OnKeyPress) (formularios, controles)	Cuando se presiona o suelta una tecla o combinación de teclas que produce un carácter ANSI estándar mientras un control o formulario tiene el enfoque. Un formulario sólo puede tener el enfoque si todos los controles visibles en el formulario están desactivados o no hay controles en el formulario. Por ejemplo, el evento KeyPress se puede utilizar para responder a pulsaciones de teclas introducidas en un cuadro de texto o cuadro combinado. Para las pulsaciones no reconocidas por KeyPress, como las teclas de función o de desplazamiento, utilice los eventos KeyDown y KeyUp. El evento KeyPress también ocurre si se envía una pulsación que produzca un carácter ANSI estándar en un formulario o control usando la acción EnviarTeclas en una macro o la instrucción SendKeys en Visual Basic. Un formulario recibe también todos los eventos KeyPress (incluso los de los controles) antes de que ocurran para los controles si se establece la propiedad TeclaDePresentaciónPreliminar (KeyPreview) del formulario a Sí. Si se mantiene presionada una tecla, el evento KeyPress ocurrirá repetidamente.
KeyUp	AlSubirTecla (OnKeyUp) (formularios, controles)	Cuando suelta una tecla presionada mientras un control o formulario tiene el enfoque. El objeto con el enfoque recibe todas las pulsaciones. Un formulario sólo puede tener el enfoque si todos los controles visibles en el formulario están desactivados o no hay controles en el formulario. El evento KeyUp también ocurre si se envía una pulsación a un formulario o control usando la acción EnviarTeclas en una macro o la instrucción SendKeys en Visual Basic. Un formulario recibe también todos los eventos KeyUp (incluso los de los controles) antes de que ocurran para los controles si se establece la propiedad TeclaDePresentaciónPreliminar (KeyPreview) del formulario a Sí. Si se mantiene presionada una tecla, el evento KeyUp ocurre después de que hayan ocurrido todos los eventos KeyDown y KeyPress.


Eventos del mouse

Los eventos del mouse ocurren cuando ocurre una acción del mouse, como por ejemplo presionar o hacer clic en un botón del mouse.

Evento	Propiedad del evento	Ocurrencia
Click	AlHacerClic (OnClick) (formularios, controles)	Para un control, este evento ocurre cuando se presiona y luego se suelta (se hace clic) en el el botón primario del mouse sobre un control. Para un formulario, este evento ocurre cuando se hace clic en un selector de registro o en un área fuera de una sección o control.
DblClick	AlHacerDobleClic (OnDblClick) (formularios, controles)	Cuando se presiona y suelta (se hace clic) dos veces con el botón primario del mouse en un control o su etiqueta. Para un formulario, este evento ocurre cuando se hace doble clic en un área en blanco o selector de registro en el formulario.
MouseDown	AlBajarMouse (OnMouseDown) (formularios, controles)	Cuando se presiona un botón del mouse mientras que el puntero está en un un formulario o control. La cancelación del evento MouseDown usando la acción CancelarEvento en un macro evita que se muestre el menú contextual cuando se presione el botón secundario del mouse.
MouseMove	AlMoverMouse (OnMouseMove) (formularios, controles)	Cuando se libera un botón presionado del mouse mientras el puntero está en un formulario, sección de formulario, o control.
MouseUp	AlSubirMouse (OnMouseUp) (formularios, controles)	Cuando se mueve el puntero del mouse sobre un formulario o control.


Eventos de impresión

Los eventos de impresión ocurren cuando se imprime un informe o se le da formato para que se imprima.

Evento	Propiedad del evento	Ocurrencia
Format	AlDarFormato (OnFormat) (informes)	Cuando Microsoft Access determina qué datos van en la sección de un informe, pero antes de que Microsoft Access dé formato a la sección para vista preliminar o impresión. Su macro o procedimiento de evento puede utilizar los datos del registro activo para hacerle cambios al diseño de la página..
NoData	AlNoDatos (OnNoData) (informes)	Después de que Microsoft Access dé formato a un informe que no tiene datos para que se imprima (el informe es dependiente de un recordset en blanco), pero antes de que se imprima el informe. Este evento se puede utilizar para cancelar la impresión de un informe en blanco.
Page	AlPaginar (OnPage) (informes)	Después de que Microsoft Access dé formato a una página para que se imprima, pero antes de que se imprima.
Print	AlImprimir (OnPrint) (informes)	Después de que Microsoft Access dé formato a los datos de una sección del informe, pero antes de que se imprima la sección.
Retreat	AlRetirarse (OnRetreat) (informes)	Cuando Microsoft Access debe "retroceder" a un punto pasado una o más secciones del informe para realizar múltiples pases para dar formato. Esto ocurre después del evento Format de la sección, aunque antes del evento Print. El evento Retreat de cada sección ocurre mientras que Microsoft Access retrocede pasada la sección. Esto le permite deshacer cualquier cambio que haya hecho durante el evento Format para la sección.


Eventos de ventana

Los eventos de ventana ocurren cuando se abre, se ajusta el tamaño o cierra un formulario o informe.

Evento	Propiedad del evento	Ocurrencia
Close	AlCerrar (OnClose) (formularios, informes)	Cuando se cierra un formulario o informe y se elimina de la pantalla.
Load	AlCargar (OnLoad) (formularios)	Cuando se abre un formulario y se muestran sus registros. Este evento ocurre antes del evento Current, aunque después que el evento Open.
Open	AlAbrir (OnOpen) (formularios, informes)	Cuando se abre un formulario pero antes de que se muestre el primer registro. Cuando se abre un informe pero antes de que se imprima.
Resize	AlCambiarTamaño (OnResize) (formularios)	Cuando cambia el tamaño de un formulario. Este evento también ocurre cuando se muestra un formulario por primera vez.
Unload	AlDescargar (OnUnload) (formularios)	Cuando se cierra un formulario y sus registros son transferidos, pero antes de que sea eliminado de la pantalla. Este evento ocurre antes que el evento Close.


Referencia de instrucciones

En la siguiente referencia se enumeran en orden alfabético todas las instrucciones (excepto las instrucciones SQL).

A–M

AppActivate (VBA)	DeleteControl
Beep (VBA)	DeleteReportControl
Call (VBA)	DeleteSetting (VBA)
ChDir (VBA)	Dim (VBA)
ChDrive (VBA)	Do...Loop (VBA)
Close (VBA)	End (VBA)
Const (VBA)	Erase (VBA)
Date (VBA)	Error (VBA)
DDE	Exit (VBA)
DDEExecute	FileCopy (VBA)
DDEPoke	For Each...Next (VBA)
DDETerminate	For...Next (VBA)
DDETerminateAll	Function (VBA)
Declare (VBA)	Get (VBA)
DefBool (VBA)	GoSub...Return (VBA)
DefByte (VBA)	GoTo (VBA)
DefCur (VBA)	If...Then...Else (VBA)
DefDate (VBA)	Input # (VBA)
DefDbl (VBA)	Kill (VBA)
DefInt (VBA)	Let (VBA)
DefLng (VBA)	Line Input # (VBA)
DefObj (VBA)	Lock (VBA)
DefSng (VBA)	LSet (VBA)
DefStr (VBA)	Mid (VBA)
DefType (VBA)	MidB (VBA)
DefVar (VBA)	MkDir (VBA)
N–Z

Name (VBA)	Resume (VBA)
On Error (VBA)	Return (VBA)
On...GoSub (VBA)	RmDir (VBA)
On...GoTo (VBA)	RSet (VBA)
Open (VBA)	SaveSetting (VBA)
Option Base (VBA)	Seek (VBA)
Option Compare (VBA)	SelectCase (VBA)
Option Explicit (VBA)	SendKeys (VBA)
Option Private (VBA)	Set (VBA)
Print # (VBA)	SetAttr (VBA)
Private (VBA)	Static (VBA)
Property Get (VBA)	Stop (VBA)
Property Let (VBA)	Sub (VBA)
Property Set (VBA)	Time (VBA)
Public (VBA)	Type (VBA)
Put (VBA)	Unlock (VBA)
Randomize (VBA)	While...Wend (VBA)
ReDim (VBA)	Width # (VBA)
Rem (VBA)	With (VBA)
Reset (VBA)	Write # (VBA)


Referencia de funciones

En la siguiente referencia se enumeran todas las funciones en orden alfabético. Un doble asterisco (**) indica que la función se agregó para Microsoft Access 97.

A–C

Abs (VBA)	Comando (Command)
AgregFecha (DateAdd) (VBA)	CompCadena (StrComp) (VBA)
Ahora (Now) (VBA)	Conmutador (Switch) (VBA)
Amortiz (DDB) (VBA)	ConvCadena (StrConv) (VBA)
Año (Year) (VBA)	Cos (VBA)
ArcTg (Atn) (VBA)	CreateControl
Array (VBA)	CreateForm
Cad (Str) (VBA)	CreateGroupLevel
Cadena (String) (VBA)	CreateObject (VBA)
Car (Chr) (VBA)	CreateReport
CBool (VBA)	CreateReportControl
CByte (VBA)	Cronómetro (Timer) (VBA)
CCadena (CStr) (VBA)	CSimple (CSng) (VBA)
CDec (VBA)	CuadroEntr (InputBox) (VBA)
CDoble (CDbl) (VBA)	CuadroMsj (MsgBox) (VBA)
CEntero (Cint) (VBA)	Cuenta (Count) (DAO)
CFecha (Cdate) (VBA)	CurrentDb
CLargo (CLng) (VBA)	CVariante (Cvar) (VBA)
CMoneda (Ccur) (VBA)	CVErr (VBA)
CodeDb	CVFecha (CVDate) (VBA)
CódiogoCar (Asc) (VBA)
D–H

DBúsq (Dlookup)	Elegir (Choose) (VBA)
DCont (Dcount)	EnCad (InStr) (VBA)
DDE	Ent (Int) (VBA)
DDEEnviar (DDESend)	Entorno (Environ) (VBA)
DDEIniciar (DDEInitiate)	Entrada (Input) (VBA)
DDEPedido (DDERequest)	EOF (VBA)
DDesvEst (DStDev)	Error (VBA)
DDesvEstP (DStDevP)	EsFecha (IsDate) (VBA)
Der (Right) (VBA)	EsNulo (IsNull) (VBA)
DesvEst (StDev) (DAO)	EsNum (IsNumeric) (VBA)
DesvEstP (StDevP) (DAO)	Espacio (Space) (VBA)
Día (Day) (VBA)	EsVacío (IsEmpty) (VBA)
DíaSemana (Weekday) (VBA)	Eval
DifFecha (DateDiff) (VBA)	Exp (VBA)
Dir (VBA)	Fecha (Date) (VBA)
DirAct (CurDir) (VBA)	FileAttr (VBA)
DMáx (Dmax)	Formato (Format) (VBA)
DMín (Dmin)	FreeFile (VBA)
DoEvents (VBA)	GetObject (VBA)
DPrim (DFirst)	GUIDFromString**
DProm (DAvg)	Hex (VBA)
DSuma (DSum)	Hora (Hour) (VBA)
DÚltimo (DLast)	HoraActual (Time) (VBA)
DVar	HoraFechaArch (FileDateTime) (VBA)
DVarP	HyperlinkPart
I–R

IMEStatus (VBA)	MIRR (VBA)
Interés (IPmt) (VBA)	NPer (VBA)
IRR (VBA)	NPV (VBA)
IsArray (VBA)	NúmAleat (Rnd) (VBA)
IsError (VBA)	Nz
IsMissing (VBA)	ObtenerAtributo (GetAttr) (VBA)
IsObject (VBA)	ObtenerValor (GetSetting) (VBA)
Izq (Left) (VBA)	ObtenerValores (GetAllSettings) (VBA)
LBound (VBA)	Oct (VBA)
Ln (Log) (VBA)	Pago (Pmt) (VBA)
LoadPicture	ParcFecha (DatePart) (VBA)
Loc (VBA)	Partición (Partition) (VBA)
LOF (VBA)	Ppago (PPmt) (VBA)
LongArch (FileLen) (VBA)	Primero (First) (DAO)
Longitud (Len) (VBA)	Promedio (Avg) (DAO)
Máx (Max) (DAO)	QBColor (VBA)
Mayús (Ucase) (VBA)	Raíz2 (Sqr) (VBA)
Medio (Mid) (VBA)	Recortar (Trim) (VBA)
Mes (Month) (VBA)	RecortarDer (Rtrim) (VBA)
Mín (Min) (DAO)	RecortarIzq (Ltrim) (VBA)
Minús (Lcase) (VBA)	RGB (VBA)
Minuto (Minute) (VBA)
S–Z

Seek (VBA)	Tab (VBA)
Segundo (Second) (VBA)	Tasa (Rate) (VBA)
Sen (Sin) (VBA)	Tg (Tan) (VBA)
SerieFecha (DateSerial) (VBA)	TypeName (VBA)
SerieHora (TimeSerial) (VBA)	Ubound (VBA)
Shell (VBA)	Último (Last) (DAO)
Signo (Sgn) (VBA)	UsuarioActual (CurrentUser)
Silnm (IIf) (VBA)	VA (PV) (VBA)
SinDec (Fix) (VBA)	Val (VBA)
SLN (VBA)	ValorFecha (DateValue) (VBA)
Spc (VBA)	ValorHora (TimeValue) (VBA)
StringFromGUID**	Var (DAO)
Suma (Sum) (DAO)	VarP (DAO)
SYD (VBA)	VarType (VBA)
SysCmd	VF (FV) (VBA)


Referencia de métodos

La siguiente referencia agrupa todos los métodos por objeto o colección y las enumera en orden alfabético. Un asterisco doble (**) indica que el método se agregó para Microsoft Access 97.

Agrupados por objeto o colección

Application	ItemsSelected
Collection (VBA)	Module
Connection, Connections (DAO)	Modules
Container, Containers (DAO)	Página (Page)
Control	Páginas (Pages)
Controles (Controls)	Parameter, Parameters (DAO)
Database, Databases (DAO)	Property, Properties (DAO)
DBEngine (DAO)	QueryDef, QueryDefs (DAO)
Debug (VBA)	Recordset, Recordsets (DAO)
DoCmd	Reference
Document, Documents (DAO)	References
Err (VBA)	Relation, Relations (DAO)
Error, Errors (DAO)	Informe (Report)
Field, Fields (DAO)	Pantalla (Screen)
Formulario (Form)	TableDef, TableDefs (DAO)
Group, Groups (DAO)	User, Users (DAO)
Index, Indexes (DAO)	Workspace, Workspaces (DAO)
Por orden alfabético

A–C

AccessError**	Clone (DAO)
Add (VBA)	Close (DAO)
Add (colección Pages)**	Close
AddFromFile (objeto Module)**	CloseCurrentDatabase
AddFromFile (colección References)**	CommitTrans (DAO)
AddFromGUID**	CompactDatabase (DAO)
AddFromString**	CopyObject
AddNew (DAO)	CopyQueryDef (DAO)
AddToFavorites**	CreateDatabase (DAO)
Append (DAO)	CreateEventProc**
AppendChunk (DAO)	CreateField (DAO)
ApplyFilter	CreateGroup (DAO)
Beep	CreateIndex (DAO)
BeginTrans (DAO)	CreateProperty (DAO)
BuildCriteria	CreateQueryDef (DAO)
Cancel (DAO)	CreateRelation (DAO)
CancelEvent	CreateTableDef (DAO)
CancelUpdate (DAO)	CreateUser (DAO)
Circle	CreateWorkspace (DAO)
Clear (VBA)
D–F

DefaultControl	FillCache (DAO)
DefaultWorkspaceClone	Find**
Delete (DAO)	FindFirst (DAO)
DeleteLines**	FindLast (DAO)
DeleteObject	FindNext (DAO)
DoMenuItem	FindNext
Dropdown	FindPrevious (DAO)
Echo (objeto DoCmd)	FindRecord
Echo (objeto Application)	Follow**
Edit (DAO)	FollowHyperlink**
Execute (DAO)
G–M

GetChunk (DAO)	Item (VBA)
GetOption	Line
GetRows (DAO)	MakeReplica (DAO)
GoToControl	Maximize
GoToPage (objeto DoCmd)	Minimize
GoToPage (objeto Form)	Move (DAO)
GoToRecord	MoveFirst (DAO)
Hourglass	MoveLast (DAO)
Idle (DAO)	MoveNext (DAO)
InsertLines**	MovePrevious (DAO)
InsertText**	MoveSize
N–Q

NewCurrentDatabase	OpenReport
NewPassword (DAO)	OpenTable
NextRecordSet (DAO)	OutputTo
OpenConnection (DAO)	PopulatePartial (DAO)
OpenCurrentDatabase	Print (VBA)
OpenDatabase (DAO)	Print
OpenForm	PrintOut
OpenModule	PSet
OpenQuery	Quit (objeto DoCmd)
OpenRecordset (DAO)	Quit (objeto Application)
R

Raise (VBA)	RepaintObject
Recalc	RepairDatabase (DAO)
Refresh (DAO)	ReplaceLine**
Refresh	Requery (DAO)
RefreshDatabaseWindow**	Requery (objeto DoCmd)
RefreshLink (DAO)	Requery (objeto Control o Form)
RefreshTitleBar	Restore
RegisterDatabase (DAO)	Rollback (DAO)
Remove (VBA)	Run
Remove (colección Pages)**	RunCommand**
Remove (colección References)**	RunMacro
Rename	RunSQL
Repaint
S–Z

Save	ShowToolbar
Scale	SizeToFit
Seek (DAO)	Synchronize (DAO)
SelectObject	TextHeight
SendObject	TextWidth
SetFocus	TransferDatabase
SetMenuItem	TransferSpreadsheet
SetOption (DAO)	TransferText
SetOption	Undo
SetWarnings	Update (DAO)
ShowAllRecords


Referencia de propiedades

La siguiente referencia agrupa a todas las propiedades por objeto o colección y las enumera en orden alfabético. Un asterisco (*) indica que la propiedad se agregó en Microsoft Access 95. Un asterisco doble (**) indica que la propiedad ha sido agregada en Microsoft Access 97.

Agrupadas por objeto o colección

Application	ItemsSelected
Collection (VBA)	Module
Connection, Connections (DAO)	Modules
Container, Containers (DAO)	Parameter, Parameters (DAO)
Control	Property, Properties (DAO)
Controles (Controls)	Query
Database, Databases (DAO)	QueryDef, QueryDefs (DAO)
DBEngine (DAO)	Recordset, Recordsets (DAO)
Debug (VBA)	Reference
DoCmd	References
Document, Documents (DAO)	Relation, Relations (DAO)
Err (VBA)	Informe (Report)
Error, Errors (DAO)	Informes (Reports)
Field, Fields (DAO)	Pantalla (Screen)
Formulario (Form)	Table
Formularios (Forms)	TableDef, TableDefs (DAO)
Group, Groups (DAO)	User, Users (DAO)
Index, Indexes (DAO)	Workspace, Workspaces (DAO)
Por orden alfabético

A

AbrirArgs (OpenArgs)	AlMoverMouse (OnMouseMove)
AbsolutePosition (DAO)*	AlNoDatos (OnNoData)
Action	AlNoEnLaLista (OnNotInList)
ActivaciónAutomática (AutoActivate)	AlOcurrirError (OnError)
Activado (Enabled)	AlPaginar (OnPage)
ActivarFiltro (FilterOn)*	AlPerderEnfoque (OnLostFocus)
ActivarOrden (OrderByOn)*	AlRetirarse (OnRetreat)
ActiveControl	AlSalir (OnExit)
ActiveDatasheet*	AlSubirMouse (OnMouseUp)
ActiveForm	Altura (Height)
ActiveReport	AltoDeLaEscala (ScaleHeight)
Agregar dos puntos	AltoDeLaFila (RowHeight)
AgrupaciónDeFechas (DateGrouping)	AltoFijoDeLaFicha (TabFixedHeight)**
AgruparEn (GroupOn)	AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)
AjusteDeTamañoAutomático (AutoResize)	AlturaDeLaVentana (WindowHeight)
AlAbrir (OnOpen)	AnchoDeDibujo (DrawWidth)
AlActivar (OnActivate)	AnchoDeLaEscala (ScaleWidth)
AlActivarRegistro (OnCurrent)	AnchoFijoDeLaFicha (TabFixedWidth)**
AlActualizar (OnUpdated)	Anchura (Width)
AlBajarMouse (OnMouseDown)	AnchuraDeColumnas (ColumnWidths)
AlCambiar (OnChange)	AnchuraDeLaLista (ListWidth)
AlCambiarTamaño (OnResize)	AnchuraDeLaVentana (WindowWidth)
AlCerrar (OnClose)	AnchuraDeLosBordes (BorderWidth)
AlCronómetro (OnTimer)	Anotar mensajes (LogMessages)
AlDarFormato (OnFormat)	Anterior (PreviousControl)
AlDesactivar (OnDeactivate)	AntesDeAcualizar BeforeUpdate)
AlDescargar (OnUnload)	AntesDeConfirmarEliminación (BeforeDelConfirm)
AlEliminar (OnDelete)	AntesDeInsertar (BeforeInsert)
AlEntrar (OnEnter)	AppIcon*
AlHacerClic (OnClick)	Application*
AlHacerDobleClic (OnDblClick)	AppTitle*
Alias	ArchivoDeAyuda (HelpFile)
AlImprimir (OnPrint)	Assistant**
AlineaciónDelTexto (TextAlign)	Attributes (DAO)
Alinear etiquetas	Autocomprimible (CanShrink)
AllowZeroLength (DAO)	Autoextensible (CanGrow)
AllPermissions (DAO)*
B

BarraDeHerramientas (Toolbar)**	Bloqueado (Locked)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)*	BloqueosDelRegistro (RecordLocks)
BarraDeMenús (MenuBar)	BOF (DAO)
BarraDeMenúsDeInicio (StartupMenuBar)*	Bookmark (DAO)
BarrasDeDesplazamiento (ScrollBars)	Bookmarkable (DAO)
BarrasDeMenúsContextualesDeInicio (StartupShortcutMenuBar)*	BotónCerrar (CloseButton)*
Base de datos de destino	BotonesDeDesplazamiento (NavigationButtons)
Base de datos de origen	BotonesMinMax (MinMaxButtons)*
BatchCollisionCount (DAO)	BotónQuéEsEsto (WhatsThisButton)*
BatchCollisions (DAO)	BuiltIn**
BatchSize (DAO)	BuscarPorFiltro (FilterLookup)*
C

CacheSize (DAO)	ColumnWidth
CacheStart (DAO)	ComienzoDeSel (SelStart)
Cadena de conexión del destino	CommandBars**
Cadena de conexión del origen	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridLinesBehavior)*
Cadena de conexión ODBC (ODBCConnectString)	ComportamientoDeLaTeclaEntrar (EnterKeyBehavior)
Cancelar (Cancel)	ConflictTable (DAO)*
CentradoAutomático (AutoCenter)	Connect (DAO)
Ciclo (Cycle)*	Connection (DAO)**
Clase (Class)	Container (DAO)
Clase OLE	Contar (Count)
Clustered (DAO)	ContieneDatos (HasData)*
CodeContextObject*	Continuará (WillContinue)*
CollatingOrder (DAO)	ControlType*
ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridLinesColor)*	Count (DAO)
ColorDelFondo (BackColor)	Count (VBA)
ColorDeLosBordes (BorderColor)	CountOfDeclarationLines**
ColorDelTexto (ForeColor)	CountOfLines**
ColorDeRelleno (FillColor)	CuadroDeControl (ControlBox)
Columna (Column)	CurrentObjectName
ColumnaDependiente (BoundColumn)	CurrentObjectType
ColumnHidden	CurrentRecord*
ColumnOrder	CVent (hWnd)
D

Database (DAO)	Description (DAO)*
DatasheetBackColor**	Description (VBA)*
DatasheetFontName	DesignMasterID (DAO)
DatasheetForeColor**	DespuésDeActualizar (AfterUpdate)
DataUpdatable (DAO)	DespuésDeConfirmarEliminación (AfterDelConfirm)
DateCreated (DAO)	DespuésDeInsertar (AfterInsert)
DBEngine*	Devuelve registros (ReturnsRecords)
DefaultCursorDriver (DAO)**	DirecciónDeHipervínculo (HyperlinkAddress)**
DefaultType (DAO)**	Direction (DAO)**
DefaultUser (DAO)*	Diseño a imprimir
DefaultValue (DAO)	DistinctCount (DAO)*
Descripción	DistribuciónDeLaImagen (PictureAlignment)*
	DocDeOrigen (SourceDoc)
E

EditMode (DAO)*	EspesorDeFuente (FontWeight)
EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)*	EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)
EfectoEspecial (SpecialEffect)	Estilo (Style)**
ElementoOrigen (SourceItem)	EstiloDeDibujo (DrawStyle)
Emergente (PopUp)	EstiloDelFondo (BackStyle)
Encabezado del grupo	EstiloDeLosBordes (BorderStyle)
EncabezadoDePágina (PageHeader)	EstiloDeRelleno (FillStyle)
EncabezadosDeColumna (ColumnHeads)	Etiquetado automático
EnLaSelección (InSelection)	EtiquetaX
EntradaDeDatos (DataEntry)*	EtiquetaY
EOF (DAO)	ExpansiónAutomática (AutoExpand)
F

FieldSize (DAO)**	Formato (Format) — Tipos de datos Numérico y Moneda
FilasEnLista (ListRows)	Formato (Format) — Tipos de datos Sí/No
Filter (DAO)	Formulario (Form)
Filtro (Filter)	FormularioDeInicio (StartupForm)*
Finalizar al producirse un error (FailOnError)**	ForzarNuevaPágina (ForceNewPage)
FontBold	FrozenColumns
Foreign (DAO)	FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic)
ForeignName (DAO)	FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)
ForeignTable (DAO)	FuenteEnCursiva (FontItalic)
Formato (Format) — Tipos de datos Texto y Memo	FuenteSubrayada (FontUnderline)
Formato (Format)	FullPath**
Formato (Format) — Tipos de datos Fecha/Hora
G-H

GroupLevel	HelpContext (VBA)
GUID**	HelpFile (DAO)*
HaContinuado (HasContinued)*	hWndAccessApp*
HelpContext (DAO)*	Hyperlink**
I-J

IDDelContextoDeAyuda (HelpContextID)	Inherited (DAO)
Ignorar nulos (IgnoreNulls)	IniPath (DAO)*
IgnoreNulls (DAO)	InsideHeight*
ImageHeight*	InsideWidth*
Imagen (Picture)	Intervalo ODBC (ODBCTimeout)
ImageWidth*	IntervaloDeCronómetro (TimerInterval)
ImpresiónLáserRápida (FastLaserPrinting)	IntervaloDelGrupo (GroupInterval)
ImprimirSección (PrintSection)	IsBroken**
Inclinación (LineSlant)	IsolateODBCTrans (DAO)*
Index (DAO)	IsVisible**
Indexado	Item (Colecciones)**
ÍndiceDePáginas (PageIndex)**	Item (control ObjectFrame)
ÍndiceDeTabulación (TabIndex)	ItemData
InfomaciónAdicional (Tag)	Izquierda (Left)
Informe (Report)	IzquierdaDeLaEscala (ScaleLeft)
Inherit (DAO)*	IzquierdaSecciónActiva (CurrentSectionLeft)
K-L

KeepLocal (DAO)*	ListCount
Kind**	ListIndex
LastDLLError (VBA)	LockEdits (DAO)
LastModified (DAO)	LoginTimeout (DAO)
LastUpdated (DAO)	LogMessages (DAO)
LimitarALista (LimitToList)	LongitudDeSel (SelLength)
LíneaX (GridX)	lpOLEObject
LíneaY (GridY)	LugaresDecimales (DecimalPlaces)
Lines**
M

Major**	ModoCambiarTamañoDeLaImagen (PictureSizeMode)*
MantenerJuntoElGrupo (GrpKeepTogether)*	ModoDeDibujo (DrawMode)
MantenerJuntos (KeepTogether) — Grupos	ModoDeLaEscala (ScaleMode)
MantenerJuntos (KeepTogether) — Secciones	ModoDispImp (PrtDevMode)
Marcador (Bookmark)	Module
MáscaraDeEntrada (InputMask)	MosaicoDeImágenes (PictureTiling)*
MaxRecords (DAO)**	Mostrar control*
MDE**	Mostrar todos los campos (OutputAllFields)
Me	MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar)*
MenúDeMétodoAbreviado (ShortcutMenu)	MostrarCuando (DisplayWhen)
Minor**	MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow)*
Modal	MousePointer**
Modificado (Dirty)	MoverDiseño (MoveLayout)
ModoCambiarTamaño (SizeMode)
N

Name (DAO)	Number (DAO)*
NewRecord*	Number (VBA)
NoMatch (DAO)	Número máximo de registros (MaxRecords)**
Nombre (Name)
Nombre del campo	NúmeroDeColumnas (ColumnCount)
NombreDeFuente (FontName)	NúmeroDeFormatos (FormatCount)
NuevaFilaOColumna (NewRowOrCol)	NúmeroImpresiones (PrintCount)
Nuevos valores*
O

Object	OrdenarPor (OrderBy)*
ObjectVerbs	OrdinalPosition (DAO)
ObjectVerbsCount	Origen
ObjetoOrigen (SourceObject)	OrigenDeLaFila (RowSource)
OcultarDuplicados (HideDuplicates)	OrigenDeLaPaleta (PaletteSource)
ODBCTimeout (DAO)	OrigenDelControl (ControlSource)
OLEData **	OrigenDelRegistro (RecordSource)
OpcionesDeActualización (UpdateOptions)	OriginalValue (DAO)
Orden (SortOrder)	Owner (DAO)
P

Página (Page)	Pie del grupo
Páginas (Pages)	PieDePágina (PageFooter)
PáginasDeLaImagen (PicturePages)*	Pintando (Painting)
PaletaDeObjeto (ObjectPalette)	PosiciónX (CurrentX)
PaletaDePintura (PaintPalette)	PosiciónY (CurrentY)
PartialReplica (DAO)	Predeterminado (Default)
Password (DAO)*	PrefijoProcEvento (EventProcPrefix)
PercentPosition (DAO)	Prepare (DAO)
Permisos de ejecución	PresentaciónActual (CurrentView)
Permissions (DAO)	PresentacionesPermitidas (ViewsAllowed)
Permitir longitud cero (AllowZeroLength)	PresentaciónPredeterminada (DefaultView)
PermitirAgregar (AllowAdditions)*	Primary
PermitirAutocorrección (AllowAutoCorrect)*	Principal (Primary) (DAO)
PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars)*	Principal (Parent)
PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges)*	ProcBodyLine **
PermitirEdiciones (AllowEdits)*	ProcCountLines**
PermitirEliminación (AllowDeletions)*	ProcOfLine**
PermitirFiltros (AllowFilters)	ProcStartLine**
PermitirIgnorarInicio (AllowBypassKey)*	ProjectName**
PermitirMenúsCompletos (AllowFullMenus)*	Properties**
PermitirMenúsContextuales (AllowShortcutMenus)*	Propiedades de la base de datos*
PermitirTeclasEspeciales (AllowSpecialKeys)*	Propiedades de objetos*
PermitirVerCódigo (AllowBreakIntoCode)*	PrtDevNames
PictureData*	PrtMip
PID (DAO)	PuntoDeTabulación (TabStop)
Q-R

QueryTimeout (DAO)	Replicable (DAO)*
RecordCount (DAO)	ReplicaFilter (DAO)*
RecordsAffected (DAO)*	ReplicaID (DAO)*
RecordsetClone	ReplicationConflictFunction*
Registros únicos	Requerido (Required)
ReglaDeValidación (ValidationRule)	Required (DAO)
RepeticiónAutomática (AutoRepeat)	Restartable (DAO)
RepetirSección (RepeatSection)*	ReturnsRecords (DAO)
S

Sección (Section)	Source (VBA)
SelecciónMúltiple (MultiSelect) *	SourceField (DAO)
Selected*	SourceTable (DAO)
SelectoresDeRegistro (RecordSelectors)	SourceTableName (DAO)
SelHeight*	SQL (DAO)
SelLeft*	StillExecuting (DAO)**
SelTop*	SubDirecciónDeHipervínculo (HyperlinkSubAddress)**
SelWidth*	SumaContinua (RunningSum)
SeparadoresDeRegistros (DividingLines)*	Superior (Top)
Size (DAO)	SuperiorDeLaEscala (ScaleTop)
Sort (DAO)	SuperiorSecciónActiva (CurrentSectionTop)
Source (DAO)*	SystemDB (DAO)*
T

Tabla de destino	TipoDeImagen (PictureType)*
Table (DAO)	TipoDeOrigenDeLaFila (RowSourceType)
TabulaciónAutomática (AutoTab)	TipoDePresentación (DisplayType)
Tamaño del campo	TipoOLE (OLEType)
TamañoDeFuente (FontSize)	TipoOLEPermitido (OLETypeAllowed)
TeclaDePresentaciónPreliminar (KeyPreview)*	TipoRecordset (RecordsetType)*
Texto (Text)	Título (Caption)
TextoDeAyudaDelControl (ControlTipText)*	Títulos de columna (ColumnHeadings)
TextoDeLaBarraDeEstado (StatusBarText)	Transactions (DAO)**
TextoDeSel (SelText)	Transparente (Transparent)
TextoDeValidación (ValidationText)	TripleEstado (TripleState)*
TieneUnMóduloAsociado (HasModule)**	Type (DAO)
Tipo de datos	Type
U-Z

Única (Unique)	Valores superiores
Unique (DAO)	Valores únicos
Updatable (DAO)	ValorPredeterminado (DefaultValue)
UpdateOptions (DAO)	Value (DAO)
Usar transacción (UseTransaction) **	VariasFilas (MultiRow)**
UserControl*	Verbo (Verb)
UserName (DAO)	Version (DAO)
V1xNullBehavior (DAO)	VincularCamposPrincipales (LinkMasterFields)
ValidateOnSet (DAO)	VincularCamposSecundarios (LinkChildFields)
ValidationRule (DAO)	Visible
ValidationText (DAO)	Visible (objeto Application)*
Valor (Value)	VisibleValue (DAO)
ValorAnterior (OldValue)	WhatsThisButton (VBA)*
ValorDeLaOpción (OptionValue)


Referencia de propiedades de consulta

Cada consulta tiene los valores de la propiedad que se pueden cambiar para alterar la forma como se comporta la consulta y cómo aparecen los resultados de la misma.

Para obtener más información sobre una propiedad de las consultas, haga clic en uno de los siguientes nombres de propiedades. Un asterisco (*) indica que la propiedad se aplica a los campos o lista de campos de la consulta. Una propiedad que se enumere sin asterisco indica que se aplica a toda la consulta.

ActivarOrden (OrderByOn)	MáscaraDeEntrada (InputMask)*
Alias*	Mostrar control*
Anotar mensajes (LogMessages)	Mostrar todos los campos (OutputAllFields)
Base de datos de destino	Número máximo de registros (MaxRecords)
Base de datos de origen	OrdenarPor (OrderBy)
BloqueosDelRegistro (RecordLocks)	Origen*
Cadena de conexión del destino	Permisos de ejecución
Cadena de conexión del origen	Registros únicos
Cadena de conexión ODBC (ODBCConnectString)	Tabla de destino
Descripción	TipoRecordset (RecordsetType)
Devuelve registros (ReturnsRecords)	Título (Caption)*
Filtro (Filter)	Títulos de columna (ColumnHeadings)
Finalizar al producirse un error (FailOnError)	Usar transacción (UseTransaction)
Formato (Format)*	Valores superiores
FrozenColumns	Valores únicos
Intervalo ODBC (ODBCTimeout)


Referencia de propiedades del campo

Cada campo tiene los valores de la propiedad que puede cambiar para alterar la aparicencia y comportamiento del campo. Las propiedades disponibles para un campo dependen del tipo de datos del campo.

Para obtener más información acerca de una propiedad de campo, haga clic en el nombre de una de las propiedades siguientes.

AnchuraDeColumnas (ColumnWidth)	ModoDispImp (PrtDevMode)
AnchuraDeLaLista (ListWidth)	Mostrar control
AnchuraDeLosBordes (BorderWidth)	Nombre del campo
ColorDeLosBordes (BorderColor)	Nuevos valores
ColorDelTexto (ForeColor)	NúmeroDeColumnas (ColumnCount)
ColumnaDependiente (BoundColumn)	Orden (SortOrder)
ColumnHidden	OrigenDeLaFila (RowSource)
ColumnOrder	Permitir longitud cero (AllowZeroLength)
ColumnWidths	Principal (Primary)
ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridLinesBehavior)	PrtDevNames
Descripción	PrtMip
EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)	ReglaDeValidación (ValidationRule)
EfectoEspecial (SpecialEffect)	Requerido (Required)
EncabezadosDeColumnas (ColumnHeads)	SelHeight
EstiloDeLosBordes (BorderStyle)	SelTop
FilasEnLista (ListRows)	Tamaño del campo
Formato (Format)	TextoDeValidación (ValidationText)
FrozenColumns	Tipo de datos (DataType)
Ignorar nulos (IgnoreNulls)	TipoDeOrigenDeLaFila (RowSourceType)
Indexado	Título (Caption)
LimitarALista (LimitToList)	Única (Unique)
LugaresDecimales (DecimalPlaces)	ValorPredeterminado (DefaultValue)
MáscaraDeEntrada (InputMask)


Referencia de propiedades de la tabla

Cada tabla tiene los valores de las propiedades que se pueden cambiar para alterar la apariencia y comportamiento de la tabla.

Para obtener más información acerca de una propiedad de tabla, haga clic en el nombre de una de las propiedades siguientes.

Descripción	ReglaDeValidación (ValidationRule)
Filtro (Filter)	TextoDeValidación (ValidationText)
OrdenarPor (OrderBy)


Referencia de propiedades del control

Cada control tiene valores de las propiedades que puede cambiar para alterar la apariencia y comportamiento del control.

Los valores predeterminados de las propiedades se pueden cambiar antes de agregar el control a un formulario o informe, o una vez se haya colocado el control en el formulario o el informe.

Para obtener más información acerca de la propiedad de un control, haga clic en el nombre de uno de los controles siguientes.

ActiveX	Gráfico
Botón de alternar	Grupo de opciones
Botón de comando	Imagen
Botón de opción	Línea
Casilla de verificación	Marco de objeto dependiente
Cuadro combinado	Marco de objeto independiente
Cuadro de lista	Rectángulo
Cuadro de texto	Salto de página
Etiqueta	Subformulario/Subinforme
Ficha


Propiedades del control marco de objeto dependiente

En la siguiente lista se identifican las propiedades que se pueden establecer para un control marco de objeto dependiente. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

A-Z

ActivaciónAutomática (AutoActivate) (formularios)	ElementoOrigen (SourceItem)
Activado (Enabled) (formularios)	EnLaSelección (InSelection) (formularios)
Agregar dos puntos	EstiloDelFondo (BackStyle)
AlBajarMouse (OnMouseDown) (formularios)	EstiloDeLosBordes (BorderStyle)
AlBajarTecla (OnKeyDown) (formularios)	Etiquetado automático
AlEntrar (OnEnter) (formularios)	EtiquetaX
AlHacerClic (OnClick) (formularios)	EtiquetaY
AlHacerDobleClic (OnDblClick) (formularios)	IdDelContextoDeAyuda (HelpContextID) (formularios)
Alinear etiquetas	ÍndiceDeTabulación (TabIndex) (formularios)
AlPerderEnfoque (OnLostFocus) (formularios)	InformaciónAdicional (Tag)
AlPresionarTecla (OnKeyPress) (formularios)	Izquierda (Left)
AlRecibirEnfoque (OnGotFocus) (formularios)	ModoCambiarTamaño (SizeMode)
AlSalir (OnExit) (formularios)	MostrarCuando (DisplayWhen) (formularios)
AlSubirTecla (OnKeyUp) (formularios)	Nombre (Name)
Altura (Height)	OnMouseMove (formularios)
Anchura (Width)	OnMouseUp (formularios)
AnchuraDeLosBordes (BorderWidth)	OnUpdated (formularios)
AntesDeActualizar (BeforeUpdate) (formularios)	OpcionesDeActualización (UpdateOptions)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	OrigenDelControl (ControlSource)
Bloqueado (Locked) (formularios)	PuntoDeTabulación (TabStop) (formularios)
Clase (Class)	Superior (Top)
ColorDelFondo (BackColor)	TextoDeAyudaDelControl (ControlTipText)
ColorDeLosBordes (BorderColor)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
ControlType	TipoDePresentación (DisplayType)
DespuésDeActualizar (AfterUpdate) (formularios)	TipoOLEPermitido (OLETypeAllowed)
DocDeOrigen (SourceDoc)	Verbo (Verb)
EfectoEspecial (SpecialEffect)	Visible


Propiedades del control casilla de verificación

En la siguiente lista se identifican las propiedades que se pueden establecer para un control casilla de verificación. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Activado (Enabled) (formularios)	DespuésDeActualizar (AfterUpdate) (formularios)
Agregar dos puntos	EfectoEspecial (SpecialEffect)
AlBajarMouse (OnMouseDown) (formularios)	EnLaSelección (InSelection) (formularios)
AlBajarTecla (OnKeyDown) (formularios)	EstiloDeLosBordes (BorderStyle)
AlEntrar (OnEnter) (formularios)	Etiqueta X
AlHacerClic (OnClick) (formularios)	Etiqueta Y
AlHacerDobleClic (OnDblClick) (formularios)	Etiquetado automático
Alinear etiquetas	IdDelContextoDeAyuda (HelpContextID) (formularios)
AlMoverMouse (OnMouseMove) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
AlPerderEnfoque (OnLostFocus) (formularios)	InformaciónAdicional (Tag)
AlPresionarTecla (OnKeyPress) (formularios)	Izquierda (Left)
AlRecibirEnfoque (OnGotFocus) (formularios)	MostrarCuando (DisplayWhen) (formularios)
AlSalir (OnExit) (formularios)	Name
AlSubirMouse (OnMouseUp) (formularios)	OrigenDelControl (ControlSource)
AlSubirTecla (OnKeyUp) (formularios)	PuntoDeTabulación (TabStop) (formularios)
Altura (Height)	ReglaDeValidación (ValidationRule) (formularios)
Anchura (Width)	Superior (Top)
AnchuraDeLosBordes (BorderWidth)	TextoDeAyudaDelControl (ControlTipText)
AntesDeActualizar (BeforeUpdate) (formularios)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	TextoDeValidación (ValidationText) (formularios)
Bloqueado (Locked) (formularios)	TripleEstado (TripleState)
ColorDeLosBordes (BorderColor)	ValorPredeterminado (DefaultValue) (formularios)
ControlType	Visible


Propiedades del control cuadro combinado

En la siguiente lista se identifican las propiedades que se pueden establecer para un control cuadro combinado. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

A–D

Activado (Enabled) (formularios)	AlSubirMouse (OnMouseUp) (formularios)
Agregar dos puntos	AlSubirTecla (OnKeyUp) (formularios)
AlBajarMouse (OnMouseDown) (formularios)	Altura (Height)
AlBajarTecla (OnKeyDown) (formularios)	Anchura (Width)
AlCambiar (OnChange) (formularios)	AnchuraDeColumnas (ColumnWidths)
AlEntrar (OnEnter) (formularios)	AnchuraDeLaLista (ListWidth)
AlHacerClic (OnClick) (formularios)	AnchuraDeLosBordes (BorderWidth)
AlHacerDobleClic (OnDblClick) (formularios)	AntesDeActualizar (BeforeUpdate) (formularios)
AlineaciónDelTexto (TextAlign)	BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)
Alinear etiquetas	Bloqueado (Locked) (formularios)
AlMoverMouse (OnMouseMove) (formularios)	ColorDelFondo (BackColor)
AlNoEnLista (OnNotInList) (formularios)	ColorDeLosBordes (BorderColor)
AlPerderEnfoque (OnLostFocus) (formularios)	ColorDelTexto (ForeColor)
AlPresionarTecla (OnKeyPress) (formularios)	Columna (Column)
AlRecibirEnfoque (OnGotFocus) (formularios)	ColumnaDependiente (BoundColumn)
AlSalir (OnExit) (formularios)	DespuésDeActualizar (AfterUpdate) (formularios)
E–Z

EfectoEspecial (SpecialEffect)	LugaresDecimales (DecimalPlaces)
EncabezadosDeColumna (ColumnHeads)	MáscaraDeEntrada (InputMask)
EnLaSelección (InSelection) (formularios)	MostrarCuando (DisplayWhen) (formularios)
EspesorDeFuente (FontWeight)	Nombre (Name)
EstiloDelFondo (BackStyle)	NombreDeFuente (FontName)
EstiloDeLosBordes (BorderStyle)	NúmeroDeColumnas (ColumnCount)
Etiqueta X	OrigenDeLaFila (RowSource)
Etiqueta Y	OrigenDelControl (ControlSource)
Etiquetado automático	PermitirAutocorrección (AllowAutoCorrect)
ExpansiónAutomática (AutoExpand)	PuntoDeTabulación (TabStop) (formularios)
FilasEnLista (ListRows)	ReglaDeValidación (ValidationRule) (formularios)
Formato (Format)	Superior (Top)
FuenteEnCursiva (FontItalic)	TamañoDeFuente (FontSize)
FuenteSubrayada (FontUnderline)	TextoDeAyudaDelControl (ControlTipText) (formularios)
IdDelContextoDeAyuda (HelpContextID) (formularios)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
ÍndiceDeTabulación (TabIndex) (formularios)	TextoDeValidación (ValidationText) (formularios)
InformaciónAdicional (Tag)	TipoDeControl (ControlType)
ItemData	TipoOrigenDeLaFila (RowSourceType)
Izquierda (Left)	ValorPredeterminado (DefaultValue) (formularios)
LimitarALista (LimitToList)	Visible


Propiedades del control botón de comando

En la siguiente lista se identifican las propiedades que se pueden establecer para un control botón de comando. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Activado (Enabled) (formularios)	Etiquetado automático
Agregar dos puntos	FuenteEnCursiva (FontItalic)
AlBajarMouse (OnMouseDown) (formularios)	FuenteSubrayada (FontUnderline)
AlBajarTecla (OnKeyDown) (formularios)	IdDelContextoDeAyuda (HelpContextID) (formularios)
AlEntrar (OnEnter) (formularios)	Imagen (Picture)
AlHacerClic (OnClick) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
AlHacerDobleClic (OnDblClick) (formularios)	InformaciónAdicional (Tag)
Alinear etiquetas	Izquierda (Left)
AlMoverMouse (OnMouseMove) (formularios)	MostrarCuando (DisplayWhen) (formularios)
AlPerderEnfoque (OnLostFocus) (formularios)	Nombre (Name)
AlPresionarTecla (OnKeyPress) (formularios)	NombreDeFuente (FontName)
AlRecibirEnfoque (OnGotFocus) (formularios)	Predeterminado (Default)
AlSalir (OnExit) (formularios)	PuntoDeTabulación (TabStop) (formularios)
AlSubirMouse (OnMouseUp) (formularios)	RepeticiónAutomática (AutoRepeat) (formularios)
AlSubirTecla (OnKeyUp) (formularios)	SubdirecciónDeHipervínculo (HyperlinkSubAddress)
Altura (Height)	Superior (Top)
Anchura (Width)	TamañoDeFuente (FontSize)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	TextoDeAyudaDelControl (ControlTipText) (formularios)
Cancelar (Cancel) (formularios)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
ColorDelTexto (ForeColor)	TipoDeControl (ControlType)
DirecciónDeHipervínculo (HyperlinkAddress)	TipoDeImagen (PictureType)
EnLaSelección (InSelection) (formularios)	Título (Caption)
EspesorDeFuente (FontWeight)	Transparente (Transparent)
Etiqueta X	Visible
Etiqueta Y


Propiedades del control gráfico

En la siguiente lista se identifican las propiedades que se pueden establecer para un control gráfico. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

ActivaciónAutomática (AutoActivate) (formularios)	DespuésDeActualizar (AfterUpdate) (formularios)
Activado (Enabled) (formularios)	DocDeOrigen (SourceDoc)
Agregar dos puntos	EfectoEspecial (SpecialEffect)
AlActualizar (OnUpdated) (formularios)	ElementoOrigen (SourceItem)
AlBajarMouse (OnMouseDown) (formularios)	EnLaSelección (InSelection) (formularios)
AlBajarTecla (OnKeyDown) (formularios)	EstiloDelFondo (BackStyle)
AlEntrar (OnEnter) (formularios)	EstiloDeLosBordes (BorderStyle)
AlHacerClic (OnClick) (formularios)	Etiqueta X
AlHacerDobleClic (OnDblClick) (formularios)	Etiqueta Y
Alinear etiquetas	Etiquetado automático
AlMoverMouse (OnMouseMove) (formularios)	IdDelContextoDeAyuda (HelpContextID) (formularios)
AlPerderEnfoque (OnLostFocus) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
AlPresionarTecla (OnKeyPress) (formularios)	InformaciónAdicional (Tag)
AlRecibirEnfoque (OnGotFocus) (formularios)	Izquierda (Left)
AlSalir (OnExit) (formularios)	ModoCambiarTamaño (SizeMode)
AlSubirMouse (OnMouseUp) (formularios)	MostrarCuando (DisplayWhen) (formularios)
AlSubirTecla (OnKeyUp) (formularios)	Nombre (Name)
Altura (Height)	OpcionesDeActualización (UpdateOptions)
Anchura (Width)	OrigenDelControl (ControlSource)
AnchuraDeLosBordes (BorderWidth)	PuntoDeTabulación (TabStop) (formularios)
AntesDeActualizar (BeforeUpdate) (formularios)	Superior (Top)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	TextoDeAyudaDelControl (ControlTipText)
Bloqueado (Locked) (formularios)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
Clase (Class)	TipoDePresentación (DisplayType)
ColorDelFondo (BackColor)	TipoOLEPermitido (OLETypeAllowed)
ColorDeLosBordes (BorderColor)	Verbo (Verb)
ControlType	Visible


Propiedades del control imagen

En la siguiente lista se identifican las propiedades que se pueden establecer para un control imagen. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

AlBajarMouse (OnMouseDown) (formularios)	EstiloDelFondo (BackStyle)
AlHacerClic (OnClick) (formularios)	EstiloDeLosBordes (BorderStyle)
AlHacerDobleClic (OnDblClick) (formularios)	IdDelContextoDeAyuda (HelpContextID)
AlMoverMouse (OnMouseMove) (formularios)	Imagen (Picture)
AlSubirMouse (OnMouseUp) (formularios)	InformaciónAdicional (Tag)
Altura (Height)	Izquierda (Left)
Anchura (Width)	ModoCambiarTamaño (SizeMode)
AnchuraDeLosBordes (BorderWidth)	MosaicoDeImágenes (PictureTiling) (formularios)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	MostrarCuando (DisplayWhen) (formularios)
ColorDelFondo (BackColor)	Nombre (Name)
ColorDeLosBordes (BorderColor)	SubdirecciónDeHipervínculo (HyperlinkSubAddress)
ControlType	Superior (Top)
DirecciónDeHipervínculo (HyperlinkAddress)	TextoDeAyudaDelControl (ControlTipText) (formularios)
DistribuciónDeLaImagen (PictureAlignment)	TipoDeImagen (PictureType)
EfectoEspecial (SpecialEffect)	Visible
EnLaSelección (InSelection) (formularios)


Propiedades del control etiqueta

En la siguiente lista se identifican las propiedades que se pueden establecer para un control etiqueta. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

AlBajarMouse (OnMouseDown) (formularios)	EspesorDeFuente (FontWeight)
AlHacerClic (OnClick) (formularios)	EstiloDelFondo (BackStyle)
AlHacerDobleClic (OnDblClick) (formularios)	EstiloDeLosBordes (BorderStyle)
AlineaciónDelTexto (TextAlign)	FuenteEnCursiva (FontItalic)
AlMoverMouse (OnMouseMove) (formularios)	FuenteSubrayada (FontUnderline)
AlSubirMouse (OnMouseUp) (formularios)	IdDelContextoDeAyuda (HelpContextID)
Altura (Height)	InformaciónAdicional (Tag)
Anchura (Width)	Izquierda (Left)
AnchuraDeLosBordes (BorderWidth)	MostrarCuando (DisplayWhen) (formularios)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	Nombre (Name)
ColorDelFondo (BackColor)	NombreDeFuente (FontName)
ColorDeLosBordes (BorderColor)	SubdirecciónDeHipervínculo (HyperlinkSubAddress)
ColorDelTexto (ForeColor)	Superior (Top)
ControlType	TamañoDeFuente (FontSize)
DirecciónDeHipervínculo (HyperlinkAddress)	TextoDeAyudaDelControl (ControlTipText) (formularios)
EfectoEspecial (SpecialEffect)	Título (Caption)
EnLaSelección (InSelection) (formularios)	Visible


Propiedades del control línea

En la siguiente lista se identifican las propiedades que se pueden establecer para un control línea. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Altura (Height)	Inclinación (LineSlant)
Anchura (Width)	InformaciónAdicional (Tag)
AnchuraDeLosBordes (BorderWidth)	Izquierda (Left)
ColorDeLosBordes (BorderColor)	MostrarCuando (DisplayWhen) (formularios)
ControlType	Nombre (Name)
EfectoEspecial (SpecialEffect)	Superior (Top)
EnLaSelección (InSelection) (formularios)	Visible
EstiloDeLosBordes (BorderStyle)


Propiedades del control cuadro de lista

En la siguiente lista se identifican las propiedades que se pueden establecer para un control cuadro de lista. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

A–M

Activado (Enabled) (formularios)	ColorDeLosBordes (BorderColor)
Agregar dos puntos	ColorDelTexto (ForeColor)
AlBajarMouse (OnMouseDown) (formularios)	Columna (Column) (formularios)
AlBajarTecla (OnKeyDown) (formularios)	ColumnaDependiente (BoundColumn)
AlEntrar (OnEnter) (formularios)	ControlType
AlHacerClic (OnClick) (formularios)	DespuésDeActualizar (AfterUpdate) (formularios)
AlHacerDobleClic (OnDblClick) (formularios)	EfectoEspecial (SpecialEffect)
Alinear etiquetas	EncabezadosDeColumna (ColumnHeads)
AlMoverMouse (OnMouseMove) (formularios)	EnLaSelección (InSelection) (formularios)
AlPerderEnfoque (OnLostFocus) (formularios)	EspesorDeFuente (FontWeight)
AlPresionarTecla (OnKeyPress) (formularios)	EstiloDeLosBordes (BorderStyle)
AlRecibirEnfoque (OnGotFocus) (formularios)	Etiqueta X
AlSalir (OnExit) (formularios)	Etiqueta Y
AlSubirMouse (OnMouseUp) (formularios)	Etiquetado automático
AlSubirTecla (OnKeyUp) (formularios)	FuenteEnCursiva (FontItalic)
Altura (Height)	FuenteSubrayada (FontUnderline)
Anchura (Width)	IdDelContextoDeAyuda (HelpContextID) (formularios)
AnchuraDeColumnas (ColumnWidths)	ÍndiceDeTabulación (TabIndex) (formularios)
AnchuraDeLosBordes (BorderWidth)	InformaciónAdicional (Tag)
AntesDeActualizar (BeforeUpdate) (formularios)	ItemData
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	Izquierda (Left)
Bloqueado (Locked) (formularios)	MostrarCuando (DisplayWhen) (formularios)
ColorDelFondo (BackColor)
N–Z

Nombre (Name)	Superior (Top)
NombreDeFuente (FontName)	TamañoDeFuente (FontSize)
NúmeroDeColumnas (ColumnCount)	TextoDeAyudaDelControl (ControlTipText) (formularios)
OrigenDeLaFila (RowSource)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
OrigenDelControl (ControlSource)	TextoDeValidación (ValidationText) (formularios)
PuntoDeTabulación (TabStop) (formularios)	TipoOrigenDeLaFila (RowSourceType)
ReglaDeValidación (ValidationRule) (formularios)	ValorPredeterminado (DefaultValue) (formularios)
SelecciónMúltiple (MultiSelect)	Visible


Propiedades del control botón de opción

En la siguiente lista se identifican las propiedades que se pueden establecer para un control botón de opciones. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Activado (Enabled) (formularios)	DespuésDeActualizar (AfterUpdate) (formularios)
Agregar dos puntos	EfectoEspecial (SpecialEffect)
AlBajarMouse (OnMouseDown) (formularios)	EnLaSelección (InSelection) (formularios)
AlBajarTecla (OnKeyDown) (formularios)	EstiloDeLosBordes (BorderStyle)
AlEntrar (OnEnter) (formularios)	Etiqueta X
AlHacerClic (OnClick) (formularios)	Etiqueta Y
AlHacerDobleClic (OnDblClick) (formularios)	Etiquetado automático
Alinear etiquetas	IdDelContextoDeAyuda (HelpContextID) (formularios)
AlMoverMouse (OnMouseMove) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
AlPerderEnfoque (OnLostFocus) (formularios)	InformaciónAdicional (Tag)
AlPresionarTecla (OnKeyPress) (formularios)	Izquieda (Left)
AlRecibirEnfoque (OnGotFocus) (formularios)	MostrarCuando (DisplayWhen) (formularios)
AlSalir (OnExit) (formularios)	Nombre (Name)
AlSubirMouse (OnMouseUp) (formularios)	OrigenDelControl (ControlSource)
AlSubirTecla (OnKeyUp) (formularios)	PuntoDeTabulación (TabStop) (formularios)
Altura (Height)	ReglaDeValidación (ValidationRule) (formularios)
Anchura (Width)	Superior (Top)
AnchuraDeLosBordes (BorderWidth)	TextoDeAyudaDelControl (ControlTipText) (formularios)
AntesDeActualizar (BeforeUpdate) (formularios)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	TextoDeValidación (ValidationText) (formularios)
Bloqueado (Locked) (formularios)	TripleEstado (TripleState)
ColorDeLosBordes (BorderColor)	ValorPredeterminado (DefaultValue) (formularios)
ControlType	Visible


Propiedades del control grupo de opciones

En la siguiente lista se identifican las propiedades que puede establecer para un control grupo de opciones. aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Activado (Enabled) (formularios)	EnLaSelección (InSelection)
Agregar dos puntos	EstiloDelFondo (BackStyle)
AlBajarMouse (OnMouseDown) (formularios)	EstiloDeLosBordes (BorderStyle)
AlEntrar (OnEnter) (formularios)	Etiqueta X
AlHacerClic (OnClick) (formularios)	Etiqueta Y
AlHacerDobleClic (OnDblClick) (formularios)	Etiquetado automático
Alinear etiquetas	IdDelContextoDeAyuda (HelpContextID) (formularios)
AlMoverMouse (OnMouseMove) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
AlSalir (OnExit) (formularios)	InformaciónAdicional (Tag)
AlSubirMouse (OnMouseUp) (formularios)	Izquierda (Left)
Altura (Height)	MostrarCuando (DisplayWhen) (formularios)
Anchura (Width)	Nombre (Name)
AnchuraDeLosBordes (BorderWidth)	OrigenDelControl (ControlSource)
AntesDeActualizar (BeforeUpdate) (formularios)	PuntoDeTabulación (TabStop) (formularios)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	ReglaDeValidación (ValidationRule) (formularios)
Bloqueado (Locked) (formularios)	Superior (Top)
ColorDelFondo (BackColor)	TextoDeAyudaDelControl (ControlTipText) (formularios)
ColorDeLosBordes (BorderColor)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
ControlType	TextoDeValidación (ValidationText) (formularios)
DespuésDeActualizar (AfterUpdate) (formularios)	ValorPredeterminado (DefaultValue) (formularios)
EfectoEspecial (SpecialEffect)	Visible


Propiedades del control salto de página

En la siguiente lista se identifican las propiedades que se pueden establecer para un control salto de página. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

EnLaSelección (InSelection) (formularios)	Nombre (Name)
InformaciónAdicional (Tag)	Superior (Top)
Izquierda (Left)	TipoDeControl (ControlType)


Propiedades del control rectángulo

En la siguiente lista se identifican las propiedades que se pueden establecer para un control rectágulo. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

AlBajarMouse (OnMouseDown) (formularios)	EfectoEspecial (SpecialEffect)
AlHacerClic (OnClick) (formularios)	EnLaSelección (InSelection) (formularios)
AlHacerDobleClic (OnDblClick) (formularios)	EstiloDelFondo (BackStyle)
AlMoverMouse (OnMouseMove) (formularios)	EstiloDeLosBordes (BorderStyle)
AlSubirMouse (OnMouseUp) (formularios)	InformaciónAdicional (Tag)
Altura (Height)	Izquierda (Left)
Anchura (Width)	MostrarCuando (DisplayWhen) (formularios)
AnchuraDeLosBordes (BorderWidth)	Nombre (Name)
ColorDelFondo (BackColor)	Superior (Top)
ColorDeLosBordes (BorderColor)	Visible
ControlType


Propiedades del control subformulario/subinforme

En la siguiente lista se identifican las propiedades que se pueden establecer para un control subformulario/subinforme. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Activado (Enabled) (formularios)	Etiqueta Y
Agregar dos puntos	Etiquetado automático
AlEntrar (OnEnter) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
Alinear etiquetas	InformaciónAdicional (Tag)
AlSalir (OnExit) (formularios)	Izquierda (Left)
Altura (Height)	MostrarCuando (DisplayWhen) (formularios)
Anchura (Width)	Nombre (Name)
AnchuraDeLosBordes (BorderWidth)	ObjetoOrigen (SourceObject)
Autocomprimible (CanShrink)	PuntoDeTabulación (TabStop) (formularios)
Autoextensible (CanGrow)	Superior (Top)
Bloqueado (Locked) (formularios)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
ColorDeLosBordes (BorderColor)	TipoDeControl (ControlType)
EfectoEspecial (SpecialEffect)	VincularCamposPrincipales (LinkMasterFields)
EnLaSelección (InSelection) (formularios)	VincularCamposSecundarios (LinkChildFields)
EstiloDeLosBordes (BorderStyle)	Visible
Etiqueta X


Propiedades del control cuadro de texto

En la siguiente lista se identifican las propiedades que se pueden establecer para un control cuadro de texto. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

A–N

Activado (Enabled) (formularios)	ColorDelFondo (BackColor)
Agregar dos puntos	ColorDeLosBordes (BorderColor)
AlBajarMouse (OnMouseDown) (formularios)	ColorDelTexto (ForeColor)
AlBajarTecla (OnKeyDown) (formularios)	ComportamientoDeLaTeclaEntrar (EnterKeyBehavior) (formularios)
AlCambiar (OnChange) (formularios)	ControlType
AlEntrar (OnEnter) (formularios)	DespuésDeActualizar (AfterUpdate) (formularios)
AlHacerClic (OnClick) (formularios)	EfectoEspecial (SpecialEffect)
AlHacerDobleClic (OnDblClick) (formularios)	EnLaSelección (InSelection) (formularios)
AlineaciónDelTexto (TextAlign)	EspesorDeFuente (FontWeight)
Alinear etiquetas	EstiloDelFondo (BackStyle)
AlMoverMouse (OnMouseMove) (formularios)	EstiloDeLosBordes (BorderStyle)
AlPerderEnfoque (OnLostFocus) (formularios)	Etiqueta X
AlPresionarTecla (OnKeyPress) (formularios)	Etiqueta Y
AlRecibirEnfoque (OnGotFocus) (formularios)	Etiquetado automático
AlSalir (OnExit) (formularios)	FontBold
AlSubirMouse (OnMouseUp) (formularios)	Formato (Format)
AlSubirTecla (OnKeyUp) (formularios)	FuenteEnCursiva (FontItalic)
Altura (Height)	FuenteSubrayada (FontUnderline)
Anchura (Width)	IdDelContextoDeAyuda (HelpContextID) (formularios)
AnchuraDeLosBordes (BorderWidth)	ÍndiceDeTabulación (TabIndex) (formularios)
AntesDeActualizar (BeforeUpdate) (formularios)	InformaciónAdicional (Tag)
Autocomprimible (CanShrink)	Izquierda (Left)
Autoextensible (CanGrow)	LugaresDecimales (DecimalPlaces)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	MáscaraDeEntrada (InputMask)
BarrasDeDesplazamiento (ScrollBars) (formularios)	MostrarCuando (DisplayWhen) (formularios)
Bloqueado (Locked) (formularios)	Nombre (Name)
BuscarPorFiltro (FilterLookup)	NombreDeFuente (FontName)
O–Z

OrigenDelControl (ControlSource)	TamañoDeFuente (FontSize)
PermitirAutocorrección (AllowAutoCorrect)	TextoDeAyudaDelControl (ControlTipText) (formularios)
PuntoDeTabulación (TabStop) (formularios)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
ReglaDeValidación (ValidationRule) (formularios)	TextoDeValidación (ValidationText) (formularios)
Superior (Top)	ValorPredeterminado (DefaultValue) (formularios)
TabulaciónAutomática (AutoTab) (formularios)	Visible


Propiedades del control botón de alternar

En la siguiente lista se identifican las propiedades que se pueden establecer para un control botón de alternar. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Activado (Enabled) (formularios)	Etiqueta Y
Agregar dos puntos	Etiquetado automático
AlBajarMouse (OnMouseDown) (formularios)	FuenteEnCursiva (FontItalic)
AlBajarTecla (OnKeyDown) (formularios)	FuenteSubrayada (FontUnderline)
AlEntrar (OnEnter) (formularios)	IdDelContextoDeAyuda (HelpContextID) (formularios)
AlHacerClic (OnClick) (formularios)	Imagen (Picture)
AlHacerDobleClic (OnDblClick) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
Alinear etiquetas	InformaciónAdicional (Tag)
AlMoverMouse (OnMouseMove) (formularios)	Izquierda (Left)
AlPerderEnfoque (OnLostFocus) (formularios)	MostrarCuando (DisplayWhen) (formularios)
AlPresionarTecla (OnKeyPress) (formularios)	Nombre (Name)
AlRecibirEnfoque (OnGotFocus) (formularios)	NombreDeFuente (FontName)
AlSalir (OnExit) (formularios)	OrigenDelControl (ControlSource)
AlSubirMouse (OnMouseUp) (formularios)	PuntoDeTabulación (TabStop) (formularios)
AlSubirTecla (OnKeyUp) (formularios)	ReglaDeValidación (ValidationRule) (formularios)
Altura (Height)	Superior (Top)
Anchura (Width)	TamañoDeFuente (FontSize)
AntesDeActualizar (BeforeUpdate) (formularios)	TextoDeAyudaDelControl (ControlTipText) (formularios)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	TextoDeLaBarraDeEstado (StatusBarText) (formularios)
Bloqueado (Locked) (formularios)	TextoDeValidación (ValidationText) (formularios)
ColorDelTexto (ForeColor)	TipoDeImagen (PictureType)
ControlType	Título (Caption)
DespuésDeActualizar (AfterUpdate) (formularios)	TripleEstado (TripleState)
EnLaSelección (InSelection) (formularios)	ValorPredeterminado (DefaultValue) (formularios)
EspesorDeFuente (FontWeight)	Visible
Etiqueta X


Propiedades del control marco de objeto independiente

En la siguiente lista se identifican las propiedades que puede establecer para un control marco de objeto in dependiente. Aquellas propiedades que sólo se aplican cuando el control está en un formulario aparecen seguidas de (formularios) para indicarlo.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

ActivaciónAutomática (AutoActivate) (formularios)	EnLaSelección (InSelection) (formularios)
Activado (Enabled) (formularios)	EstiloDelFondo (BackStyle)
AlActualizar (OnUpdated) (formularios)	EstiloDeLosBordes (BorderStyle)
AlBajarMouse (OnMouseDown) (formularios)	IdDelContextoDeAyuda (HelpContextID) (formularios)
AlEntrar (OnEnter) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
AlHacerClic (OnClick) (formularios)	InformaciónAdicional (Tag)
AlHacerDobleClic (OnDblClick)(formularios)	Izquierda (Left)
AlMoverMouse (OnMouseMove) (formularios)	ModoCambiarTamaño (SizeMode)
AlPerderEnfoque (OnLostFocus) (formularios)	MostrarCuando (DisplayWhen) (formularios)
AlRecibirEnfoque (OnGotFocus) (formularios)	Nombre (Name)
AlSalir (OnExit) (formularios)	NúmeroDeColumnas (ColumnCount)
AlSubirMouse (OnMouseUp) (formularios)	OpcionesDeActualización (UpdateOptions)
Altura (Height)	OrigenDeLaFila (RowSource)
Anchura (Width)	PuntoDeTabulación (TabStop) (formularios)
AnchuraDeLosBordes (BorderWidth)	Superior (Top)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	TextoDeAyudaDelControl (ControlTipText) (formularios)
Bloqueado (Locked) (formularios)	TextoDeLaBarraDeEstado (StatusBarText)
Clase (Class)	TipoDeOrigenDeLaFila (RowSourceType)
Clase OLE	TipoDePresentación (DisplayType)
ColorDelFondo (BackColor)	TipoOLE (OLEType)
ColorDeLosBordes (BorderColor)	TipoOLEPermitido (OLETypeAllowed)
ControlType	Verbo (Verb)
DocDeOrigen (SourceDoc)	VincularCamposPrincipales (LinkMasterFields)
EfectoEspecial (SpecialEffect)	VincularCamposSecundarios (LinkChildFields)
ElementoOrigen (SourceItem)	Visible
EncabezadosDeColumna (ColumnHeads)


Propiedades del control ficha

En la siguiente lista se identifican las propiedades que se pueden establecer para un control ficha.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Activado (Enabled)	Estilo (Style)
AlBajarMouse (OnMouseDown)	EstiloDelFondo (BackStyle)
AlBajarTecla (OnKeyDown) (formularios)	FuenteEnCursiva (FontItalic)
AlCambiar (OnChange)	FuenteSubrayada (FontUnderline)
AlHacerClic (OnClick)	IdDelContextoDeAyuda (HelpContextID)
AlHacerDobleClic (OnDblClick)	ÍndiceDeTabulación (TabIndex)
AlMoverMouse (OnMouseMove)	InformaciónAdicional (Tag)
AlPresionarTecla (OnKeyPress) (formularios)	Izquierda (Left)
AlSubirMouse (OnMouseUp)	MostrarCuando (DisplayWhen)
AlSubirTecla (OnKeyUp) (formularios)	Nombre (Name)
AltoFijoDeLaFicha (TabFixedHeight)	NombreDeFuente (FontName)
Altura (Height)	PuntoDeTabulación (TabStop)
AnchoFijoDeLaFicha (TabFixedWidth)	Superior (Top)
Anchura (Width)	TamañoDeFuente (FontSize)
BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)	TextoDeLaBarraDeEstado (StatusBarText)
ControlType	VariasFilas (MultiRow)
EnLaSelección (InSelection)	Visible
EspesorDeFuente (FontWeight)


Propiedades de los controles ActiveX

En la siguiente lista se identifican las propiedades que puede establecer para un control ActiveX.

Haga clic en uno de los siguientes nombres para mostrar información adicional acerca de esa propiedad, así como otras restricciones relativas a su disponibilidad, y para saber si se puede establecer en la hoja de propiedades, en una macro, o usando Visual Basic.

Activado (Enabled) (formularios)	EstiloDeLosBordes (BorderStyle)
AlActualizar (OnUpdated) (formularios)	IdDelContextoDeAyuda (HelpContextID) (formularios)
AlEntrar (OnEnter) (formularios)	ÍndiceDeTabulación (TabIndex) (formularios)
AlPerderEnfoque (OnLostFocus) (formularios)	InformaciónAdicional (Tag)
AlRecibirEnfoque (OnGotFocus) (formularios)	Izquierda (Left)
AlSalir (OnExit) (formularios)	MostrarCuando (DisplayWhen) (formularios)
Altura (Height)	Nombre (Name)
Anchura (Width)	Object
AnchuraDeLosBordes (BorderWidth)	OrigenDelControl (ControlSource)
Bloqueado (Locked) (formularios)	Propiedades personalizadas
Clase (Class)	PuntoDeTabulación (TabStop) (formularios)
Clase OLE	Superior (Top)
ColorDeLosBordes (BorderColor)	TextoDeAyudaDelControl (ControlTipText)
ControlType	Verbo (Verb)
EfectoEspecial (SpecialEffect)	Visible
EnLaSelección (InSelection) (formularios)


Función LoadPicture

La función LoadPicture carga un gráfico en un control ActiveX.

Sintaxis

LoadPicture(expresióndecadena)

La función LoadPicture utiliza el argumento siguiente.

Argumento	Descripción
expresióndecadena	Nombre de archivo del gráfico a cargar. El gráfico puede ser un archivo de mapa de bits (.bmp), archivo de icono (.ico), archivo cifrado en longitud de ejecución (.rle) o metarchivo (.wmf).
Comentarios

Asigne el valor de devolución de la función LoadPicture a la propiedad Imagen (Picture) de un control ActiveX para cargar dinámicamente un gráfico en el control. El ejemplo siguiente carga un mapa de bits en un control llamado ControlPersonalizadoOLE de un formulario Pedidos:

Set Formularios!Pedidos!ControlPersonalizadoOLE.Picture = LoadPicture("Stars.bmp")

La función LoadPicture devuelve un objeto de tipo Imagen (Picture). Puede asignar este valor a una variable de tipo Objeto utilizando la instrucción Set.

El objeto Imagen (Picture) no es un objeto de Microsoft Access, pero está disponible para los procedimientos de Microsoft Access.

Nota   La función LoadPicture no se puede utilizar para establecer la propiedad Imagen (Picture) de un control imagen. Esta función sólo sirve para los controles ActiveX. Para establecer la propiedad Imagen (Picture) de un control imagen, asígnele simplemente una cadena que especifique el nombre y ruta de acceso del archivo donde está el gráfico deseado.


Ejemplo de la función LoadPicture

En el ejemplo siguiente se utiliza la función LoadPicture para cargar un metarchivo en un control ActiveX de un formulario Empleados.

Sub DisplayGraphic()

Const cadRutaMapasDeBits = "C:\Program Files\Microsoft Office\Office\Bitmaps\Styles\"

' Declara variables de objeto de tipo Imagen y Control.

Dim objImagen As Object, ctl As Control

' Establece la variable Control a hacer referencia a un control ActiveX de un formulario.

Set ctl = Forms!Empleados!AlgúnControlPersonalizado

' Asigna el valor de devolución de LoadPicture a objeto Imagen.

Set objImagen = LoadPicture(cadRutaMapasDeBits & "Globe.wmf")

' Establece la propiedad Picture del control ActiveX.

Set ctl.Imagen = objImagen

End Sub


Nombres de propiedades cambiados

La tabla a continuación muestra las propiedades que tienen distintos nombres o funcionalidades de las versiones previas de Microsoft Access. Estas propiedades sólo se incluyen en esta versión de Microsoft Access por compatibilidad con las versiones anteriores. Se recomienda que use en su lugar las propiedades actuales de Microsoft Access.

Las propiedades agregadas en Microsoft Access 95 se indican con un asterisco (*) en la Referencia de propiedades. Las propiedades que se han agregado en Microsoft Access 97 se indican con un asterisco doble (**) en la Referencia de propiedades.

Propiedad Microsoft Access anterior	Propiedad Microsoft Access actual
PermitirEdiciones (AllowEditing), EdiciónPredeterminada (DefaultEditing)	PermitirAgregar (AllowAdditions), PermitirEliminación (AllowDeletions), PermitirEdiciones (AllowEdits), EntradaDeDatos (DataEntry)
BotónMax (MaxButton), BotónMin (MinButton)	BotonesMinMax (MinMaxButtons)
EstiloDeLosBordes (BorderLineStyle)	EstiloDeLosBordes (BorderStyle)
PermitirActualizar (AllowUpdating)	TipoRecordset (RecordsetType)
Dynaset	RecordsetClone
MostrarCuadrícula (ShowGrid)	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)


Establecer propiedades usando macros

Desde una macro, puede establecer las propiedades para los objetos Formulario (Form), Informe (Report) y Control, así como secciones del formulario o informe. La acción EstablecerValor se utiliza desde una macro para establecer el valor de una propiedad.

No puede usar una macro para establecer las propiedades de otros objetos Microsoft Access u Objetos de acceso a datos (DAO), o para establecer las propiedades predeterminadas de un control, pero puede establecerlas usando Visual Basic o la hoja de propiedades de un objeto en la vista Diseño.

Para establecer una propiedad de formulario, informe, o control usando una macro

1.	En una macro, agregue una acción EstablecerValor.

2.	Establezca el argumento de acción del elemento de la acción EstablecerValor a una expresión que hace referencia a la propiedad que desea establecer:

•	Para establecer una propiedad de formulario o informe, use la sintaxis Forms!nombreformulario.nombrepropiedad o Reports!nombreinforme.nombrepropiedad. Por ejemplo, la siguiente expresión hace referencia a la propiedad Visible del formulario Clientes:

Forms!Clientes.Visible

•	Para establecer una propiedad de un control en un formulario o informe, use la sintaxis  Forms!nombreformulario!nombrecontrol.nombrepropiedad o Reports!nombreinforme!nombrecontrol.nombrepropiedad. Por ejemplo, la siguiente expresión hace referencia a la propiedad Visible del control HiddenPageBreak en el informe Pedidos:

Reports!Pedidos!HiddenPageBreak.Visible

Sugerencia   Si la macro que contiene la acción EstablecerValor se ejecuta desde el formulario o informe con la propiedad que desea establecer, se puede hacer referencia a la propiedad usando simplemente la sintaxis nombrepropiedad. Sin embargo, siempre es una buena idea utilizar la sintaxis completa para hacer referencia a la propiedad, para evitar conflictos entre los nombres de los controles o las palabras clave de Visual Basic. Por ejemplo, Nombre (Name) es una propiedad de Microsoft Access; si tuviera también un control en su formulario que se llamara Nombre, debería de utilizar la sintaxis completa para hacer referencia tanto al control como a la propiedad.

3.	Establezca el argumento de acción Expresión de la acción EstablecerValor (EstablecerValor) al valor al que desee establecer la propiedad. Si la configuración es una cadena, asegúrese que la encierra entre signos de dobles comillas ("). Por ejemplo, para establecer la propiedad Título (Caption) de un formulario a Pedidos, se introduciría "Pedidos" en el argumento Expresión.

Para establecer una propiedad de una sección usando una macro

1.	En una macro, agregue una acción EstablecerValor.

2.	En el argumento de la acción del elemento, use la sintaxis Forms!nombreformulario.Section(constante).nombrepropiedad para hacer referencia a la propiedad que desea establecer. El argumento constant hace referencia a una sección particular del formulario o informe, como se describe en la propiedad Sección (Section). Por ejemplo, la siguiente expresión hace referencia a la propiedad Visible de la sección encabezado de la página del formulario Clientes:

Forms!Clientes.Section(acHeader).Visible

3.	Establezca el argumento de acción Expresión como se ha descrito anteriormente.

Nota   Por cada propiedad que desee establecer, puede buscar la propiedad en el índice de la Ayuda para encontrar información acerca de:

•	Si se puede o no establecer la propiedad desde una macro.

•	Vistas desde las que puede establecer la propiedad. No todas las propiedades pueden ser establecidas en todas las vistas. Por ejemplo, la propiedad EstiloDeLosBordes (BorderStyle) de un formulario sólo se puede establecer en la vista Diseño del formulario.

•	Qué valores deberían utilizarse para establecer la propiedad. Algunas propiedades requieren valores que no se corresponden con los valores de la hoja de propiedades, sino con valores numéricos. Puede que necesite establecer la propiedad usando los valores que usaría en Visual Basic en lugar de aquellos que usaría en la hoja de propiedades. Por ejemplo, si los valores de la propiedad son selecciones de una lista, debe usar el valor o equivalente numérico de cada selección.


Establecer propiedades usando Visual Basic

La mayoría de las propiedades se pueden establecer desde el código Visual Basic. La forma de establecer las propiedades depende de que se estén estableciendo para un objeto Formulario (Form), Informe (Report) o Control, o para un objeto DAO. Los siguientes temas indican los pasos necesarios para establecer las propiedades de cada tipo de objeto:

Establecer propiedades de formularios, informes y controles en Visual Basic

Establecer propiedades de objetos de acceso a datos en Visual Basic


Establecer propiedades de formularios, informes y controles en Visual Basic

Los objetos Formulario (Form), Informe (Report) y Control son objetos de Microsoft Access. Puede establecer las propiedades para estos objetos desde un procedimiento Sub, una Función o un procedimiento de evento. También se pueden establecer las propiedades para las secciones de formularios e informes.

Para establecer una propiedad de un formulario o informe

Haga referencia al formulario o informe individual dentro de la colección Formularios (Forms) o Informes (Reports), seguido del nombre de la propiedad y su valor. Por ejemplo, para establecer la propiedad Visible del formulario Clientes a True (-1), utilice la siguiente línea de código:

Forms!Clientes.Visible = True

También puede establecer una propiedad de un formulario o informe desde el módulo del objeto usando la propiedad Me del objeto. El código que usa la propiedad Me se ejecuta más rápido que el código que usa un nombre de objeto totalmente definido. Por ejemplo, para establecer la propiedad OrigenDelRegistro (RecordSource) del formulario Clientes a una instrucción SQL que devuelve todos los registros con una entrada de campo NombreCompañía que empieza con "A" desde dentro del módulo del formulario Clientes, use la siguiente línea de código:

Me!RecordSource = "SELECT * FROM Clientes " _

& "WHERE NombreCompañía Like 'A*'"

Para establecer una propiedad de un control

Haga referencia al control de la colección Controles (Controls) del objeto Formulario (Form) o Informe (Report) en el que reside. Puede hacer referencia a la colección Controles (Controls) implícitamente o explícitamente, aunque es más rápido hacerlo si usa una referencia implícita. Los siguientes ejemplos establecen la propiedad Visible de un cuadro de texto denominado IdCliente del formulario Clientes:

' Método más rápido.

Me!IdCliente.Visible = True

' Método más lento.

Forms!Clientes.Controls!IdClientes.Visible = True

La forma más rápido de establecer una propiedad de un control es hacerlo desde el módulo del objeto usando la propiedad Me del objeto. Por ejemplo, puede usar el siguiente código para alternar la propiedad Visible de un cuadro de texto llamado IdCliente del formulario Clientes:

With Me!IdCliente

.Visible = Not .Visible

End With

Para establecer una propiedad de una sección de formulario o informe

Haga referencia al formulario o informe dentro de la colección Formularios (Forms) o Informes (Reports), seguido de la propiedad Sección (Section) y del número de índice que identifica a la sección. El siguiente ejemplo establece la propiedad Visible de la sección encabezado de la página del formulario Clientes a False (0):

Forms!Clientes.Section(3).Visible = False

Me!Section(acPageHeader).Visible = False

Notas

•	Por cada propiedad que desee establecer, puede buscar la propiedad en el índice de la Ayuda en pantalla para buscar información acerca:

•	Si se puede o no establecer la propiedad desde Visual Basic.

•	Vistas desde las que puede establecer la propiedad. No todas las propiedades pueden establecerse en todas las vistas. Por ejemplo, la propiedad EstiloDeLosBordes (BorderStyle) de un formulario sólo puede establecerse en la vista Diseño del formulario.

•	Qué valores deberían utilizarse para establecer la propiedad. A menudo se utilizan valores diferentes cuando se establece una propiedad en Visual Basic en lugar de en la hoja de propiedades. Por ejemplo, si los valores de la propiedad son seleccionados desde una lista desplegable, es necesario utilizar el valor o equivalente numérico de cada selección.

•	Para establecer las propiedades predeterminadas para los controles desde Visual Basic, use el método DefaultControl.


Establecer propiedades de objetos de acceso a datos en Visual Basic

Los objetos de acceso a datos (DAO) permiten manipular la estructura de su base de datos y los datos que contiene desde Visual Basic. Muchos objetos DAO corresponden a objetos que se ven en su base de datos:  por ejemplo, un objeto TableDef corresponde a una tabla de Microsoft Access. Un objeto Field corresponde a un campo de una tabla.

La mayoría de las propiedades que se pueden establecer en los objetos DAO son propiedades DAO. Estas propiedades son definidas por el motor de base de datos Microsoft Jet y son establecidas de la misma manera en cualquier aplicación que incluya el motor de base de datos Jet. Algunas de las propiedades que se pueden establecer en los objetos DAO son definidas por Microsoft Access, y el motor de base de datos Jet no las reconoce automáticamente. Las propiedades en los objetos DAO se establecen de forma diferente dependiendo de si una propiedad es definida por el motor de base de datos Jet o por Microsoft Access.

Establecer propiedades DAO en los objetos DAO

Para establecer una propiedad que sea definida por el motor de base de datos Jet, haga referencia al objeto en la jerarquía de objetos DAO. La forma más fácil y rápida de hacer ésto es crear variables de objeto que representen a los diferentes objetos con los que necesite trabajar y hacer referencia a las variables de los objetos en los pasos subsiguientes de su código. Por ejemplo, el siguiente código crea un nuevo objeto TableDef y establece su propiedad Nombre (Name):

Dim dbs As Database, tdf As TableDef

Set dbs = CurrentDb

Set tdf = dbs.CreateTableDef

tdf.Name = "Contactos"

Establecer propiedades de Microsoft Access en objetos DAO

Cuando se establece una propiedad que esté definida por Microsoft Access, pero que se aplica a un objeto DAO, el motor de base de datos Jet no reconoce automáticamente la propiedad como una propiedad válida. La primera vez que se establece la propiedad, es necesario crear la propiedad y anexarla a la colección Properties del objeto al que se aplica. Una vez que la propiedad está en la colección Properties, puede ser establecida de la misma manera que cualquier propiedad DAO.

Si la propiedad se establece por primera vez en la interfaz del usuario, será agregada automáticamente a la colección Properties, con lo que podrá establecerla normalmente.

Cuando se escriben  procedimientos para establecer propiedades definidas por Microsoft Access, es necesario incluir códigos de tratamiento de errores para comprobar que la propiedad que se está estableciendo existe ya en la colección Properties. Para obtener más información al respecto, consulte el tema en la ayuda en pantalla sobre el método CreateProperty o el tema de la propiedad determinada.

Tenga en cuenta que cuando se crea la propiedad, es necesario especificar correctamente su propiedad Tipo antes de que la agregue a la colección Properties. La propiedad Tipo se puede determinar basado en la información de la sección Valores del tema de la ayuda de la propiedad individual. La siguiente tabla ofrece algunas indicaciones para determinar la configuración de la propiedad Tipo.

Si el valor de la propiedad es	Entonces el valor de la propiedad Tipo debería ser
Una cadena	dbText
True/False	dbBoolean
Un entero	dbInteger
La siguiente tabla enumera algunas propiedades definidas por Microsoft Access que son aplicables a los objetos DAO.

Objeto DAO	Propiedades definidas por Microsoft Access
Database	AppTitle, AppIcon, MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow), MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar), PermitirMenúsContextuales (AllowShortcutMenus), PermitirMenúsCompletos (AllowFullMenus), PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars), PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges), PermitirVerCódigo (AllowBreakIntoCode), PermitirTeclasEspeciales (AllowSpecialKeys), Replicable, ReplicationConflictFunction
Contenedor SummaryInfo	Title, Subject, Author, Manager, Company, Category, Keywords, Comments, Hyperlink Base (Consulte la ficha Resumen del cuadro de diálogo Propiedades de NombreBasededatos, disponible haciendo clic en Propiedades de base de datos en el menú Archivo.)
Contenedor UserDefined	(Consulte la ficha Resumen del cuadro de diálogo Propiedades nombreBasededatos, disponible haciendo clic en Propiedades de base de datos en el menú Archivo).
TableDef	DatasheetBackColor, EfectoDeCeldasDeHojasDeDatos (DatasheetCellsEffect), AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight), FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic), DatasheetFontName, FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline), EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight), DatasheetForeColor, ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior), ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor), Descripción, FrozenColumns, AltoDeLaFila (RowHeight), ShowGrid
QueryDef	DatasheetBackColor, EfectoDeCeldasDeHojasDeDatos (DatasheetCellsEffect), AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight), FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic), DatasheetFontName, FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline), EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight), DatasheetForeColor, ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior), ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor), Descripción, FailOnError, FrozenColumns, LogMessages, MaxRecords, BloqueosDelRegistro (RecordLocks), AltoDeLaFila (RowHeight), ShowGrid, UseTransaction
Field	Título (Caption), ColumnHidden, ColumnOrder, ColumnWidth, LugaresDecimales (DecimalPlaces), Descripción, Formato (Format), MáscaraDeEntrada (InputMask)


Establecer propiedades de formularios, informes y controles

Cada formulario, informe, sección y control tiene valores de propiedades que puede cambiar para alterar la apariencia o comportamiento de ese elemento determinado. Las propiedades se examinan y se cambian usando la hoja de propiedades, una macro, o Visual Basic.

Para establecer propiedades

1.	En la vista Diseño del formulario o vista Diseño del informe, seleccione el control, sección, formulario o informe para el que desea establecer la propiedad. Puede seleccionar:

•	Uno o más controles. Para seleccionar controles múltiples, se puede hacer clic en los controles con la tecla MAYÚS presionada o arrastrar el puntero del mouse sobre los controles que desea seleccionar. Si selecciona múltiples controles, la hoja de propiedades mostrará sólo aquellas propiedades que tienen en común los controles seleccionados.

•	Una sección. Haga clic en el selector de sección de la sección que desea seleccionar.

•	El formulario o informe completo. Haga clic en el selector de formulario o en el selector de informe en la esquina superior izquierda del formulario o informe.

2.	Muestre la hoja de propiedades haciendo clic con el botón secundario en el objeto o sección y luego eligiendo Propiedades en el menú contextual, o eligiendo Propiedades  [image]  en la barra de herramientas.

3.	Elija la propiedad para la que desea establecer el valor, y luego haga una de las siguientes cosas:

•	En el cuadro de la propiedad, escriba el valor o expresión apropiado.

•	Si el cuadro de la propiedad contiene una flecha, haga clic en la flecha y luego elija un valor de la lista.

•	Si aparece un botón Generar [image]  próximo al cuadro de la propiedad, haga clic en el mismo para mostrar un generador o para mostrar un cuadro de diálogo que le de la opción de elegir generador. Por ejemplo, puede usar el Generador de código, Generador de macros, o el Generador de consultas para establecer algunas propiedades.

Si la hoja de propiedades está en blanco o si no ve las propiedades que esperaba en la hoja de propiedades, consulte Solución de problemas con la hoja de propiedades.

Sugerencias

•	Microsoft Access dispone de un cuadro Zoom para escribir y presentar expresiones u otros valores de propiedades largas. Para mostrar el cuadro Zoom, haga clic en un cuadro de propiedad en la hoja de propiedades. Luego presione MAYÚS+F2, o haga clic con el botón secundario y luego elija Zoom en el menú contextual.

•	Puede establecer la propiedad OrigenDelControl (ControlSource) para algunos controles escribiendo el valor de la propiedad en el propio control. Para obtener más información, consulte Crear un control calculado.

•	Puede cambiar los valores predeterminados de la propiedad para un tipo de control, de tal forma que los controles futuros que cree tengan los mismos valores.

•	Los valores de la propiedad de un control dependiente pueden no coincidir con los valores correspondientes en el campo de la tabla o consulta base del que es dependiente el control. Si los valores son distintos, los valores del formulario o informe normalmente anulan a aquellos de la tabla o consulta. Para obtener más información acerca de cómo se heredan las propiedades, consulte Cómo se relacionan las propiedades de control con las propiedades de sus campos subyacentes.


Establecer propiedades de inicio y opciones usando código

Las propiedades de inicio afectan a cómo aparece la aplicación de la base de datos cuando se abre. Por ejemplo, las propiedades de inicio permiten personalizar la barra de títulos, los menús, las barras de herramientas y el formulario de inicio de la aplicación. Para ver las propiedades del cuadro de diálogo Inicio, haga clic en el menú Herramientas.

Puede establecer opciones en el cuadro de diálogo Opciones para cambiar varios aspectos del entorno de la aplicación mientras está trabajando en el mismo. Por ejemplo, puede establecer las opciones predeterminadas de los formularios, informes, tablas y consultas. Para ver el cuadro de diálogo Opciones, elija Opciones en el menú Herramientas.

Los siguientes temas ofrecen información específica acerca de las propiedades de inicio y las opciones mediante código.

Establecer propiedades de inicio desde Visual Basic

Establecer opciones desde Visual Basic


Establecer propiedades de inicio desde Visual Basic

Las propiedades de inicio son propiedades de un objeto Database. Un objeto de Database es un objeto DAO suministrado por el motor de base de datos Microsoft Jet, aunque las propiedades de inicio son definidas por Microsoft Access, con lo que no son reconocidas de forma automática por el motor de base de datos Jet. Si una propiedad de inicio no ha sido establecida previamente, debe crearla y agregarla a la colección Properties del objeto de base de datos. Cuando las propiedades de inicio se establecen desde Visual Basic, debe incluir código de tratamiento de errores para comprobar que la propiedad existe en la colección Properties. Para obtener más información acerca de cómo establecer propiedades definidas por Microsoft Access, consulte Establecer propiedades de objetos de acceso a datos en Visual Basic.

Los nombres de las propiedades de inicio son diferentes del texto que aparece en el cuadro de diálogo Inicio, disponible al hacer clic en Inicio en el menú Herramientas. La siguiente tabla proporciona el nombre de cada propiedad de inicio como se utiliza en el código de Visual Basic.

Texto en cuadro de diálogo Inicio	Nombre propiedad
Título aplicación	AppTitle
Icono aplicación	AppIcon
Mostrar formulario	FormularioDeInicio (StartupForm)
Mostrar ventana Base de datos	MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow)
Mostrar barra de estado	MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar)
Barra de menús	BarraDeMenúsDeInicio (StartupMenuBar)
Barra de menús contextuales	BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar)
Permitir menús completos	PermitirMenúsCompletos (AllowFullMenus)
Permitir menús contextuales predeterminados	PermitirMenúsContextuales (AllowShortcutMenus)
Permitir barras de herramientas incorporadas	PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars)
Permitir cambios de barras de herramientas/menús	PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges)
Permitir examinar código después de un error	PermitirVerCódigo (AllowBreakIntoCode)
Usar teclas especiales de Access	PermitirTeclasEspeciales (AllowSpecialKeys)


Establecer opciones desde Visual Basic

Se pueden usar los métodos SetOption y GetOption para establecer y devolver los valores de las opciones del cuadro de diálogo Opciones desde el código. Para examinar el cuadro de diálogo Opciones, haga clic en Opciones en el menú Herramientas.

La siguiente tabla enumera los nombres de todas las opciones que pueden ser establecidas o devueltas desde el código y las fichas en las que pueden ser encontradas en el cuadro de diálogo Opciones, seguido por el argumento de cadena correspondiente que debe ser pasado al método SetOption o GetOption.

Notas

•	Desde Visual Basic no es posible establecer opciones en la ficha Módulo del cuadro de diálogo Opciones; éstas sólo pueden ser establecidas desde el cuadro de diálogo Opciones.

•	Si su base de datos puede ejecutarse en una versión de Microsoft Access para un lenguaje distinto al que usó para crearlo, deberá escribir en inglés los argumentos los métodos GetOption y SetOption.

Ficha Examinar

Texto de Opción	Argumento de cadena
Barra de estado	Mostrar barra de estado
Cuadro de diálogo Inicio	Mostrar cuadro de diálogo Inicio
Objetos ocultos	Mostrar objetos ocultos
Objetos del sistema	Mostrar objetos del sistema
Columna de nombres	Mostrar macro columna de nombres
Columna de condiciones	Mostrar columna de condiciones
Ficha General

Texto de opción	Argumento de cadena
Margen izquierdo	Margen izquierdo
Margen derecho	Margen derecho
Margen superior	Margen superior
Margen inferior	Margen inferior
Carpeta de base de datos predeterminada	Directorio de base de datos predeterminado
Nuevo criterio de ordenación de base de datos	Nuevo criterio de ordenación de base de datos
Proporcionar información mediante sonidos	Proporcionar información mediante sonidos
Ficha Hipervínculos/HTML

Texto de Opción	Argumento de cadena
Color de hipervínculo	Color de hipervínculo
Color de hipervínculo visitado	Color de hipervínculo visitado
Hipervínculos subrayados	Hipervínculos subrayados
Mostrar direcciones de hipervínculos en la barra de estado	Mostrar direcciones de hipervínculos en barra de estado
Plantilla HTML	Plantilla HTML
Nombre de origen de datos	Nombre de origen de datos
Ficha usuario	Ficha usuario
Contraseña	Contraseña
Dirección URL del servidor	Dirección URL de páginas Active Server
Tiempo de espera de sesión	Tiempo de espera de sesión de páginas Active Server
Ficha Editar/Buscar

Texto de Opción	Argumento de la cadena
Comportamiento predeterminado de Buscar/Reemplazar	Comportamiento predeterminado de Buscar/Reemplazar
Cambios de registros	Confirmar cambios de registros
Eliminar documentos	Confirmar eliminar documentos
Consultas de acción	Confirmar consultas de acción
Campos locales indexados	Mostrar valores en Indexado
Campos locales no indexados	Mostrar valores en no-indexado
Campos ODBC	Mostrar valores en remoto
No mostrar listas donde aparecen más de este número de registros	Mostrar límite valores
Ficha Teclado

Texto de opción	Argumento de cadena
Mover después de Entrar	Mover después de Entrar
Comportamiento de tecla de dirección	Comportamiento de tecla de dirección
Comportamiento del campo de entrada	Comportamiento del campo de entrada
El cursor se detiene en el primer/último campo	El cursor se detiene en el primer/último campo
Ficha Hoja de datos

Texto de opción	Argumento de cadena
Colores predeterminados: Fuente	Color de fuente predeterminado
Colores predeterminados: Fondo	Color de fondo predeterminado
Colores predeterminados: Cuadrícula	Color de cuadrícula predeterminado
Fuente predeterminada: Fuente	Nombre fuente predeterminada
Fuente predeterminada: Peso	Peso fuente predeterminada
Fuente predeterminada: Tamaño	Tamaño fuente predeterminada
Fuente predeterminada: Itálica	Fuente predeterminada Itálica
Fuente predeterminada: Subrayado	Subrayado de fuente predeterminada
Horizontal	Cuadrícula Horizontal Predeterminada
Vertical	Cuadrícula Vertical Predeterminada
Ancho de columna predeterminada	Ancho de columna predeterminada
Efecto de celda predeterminada	Efecto de celda predeterminada
Mostrar animaciones	Mostrar animaciones
Ficha Tablas/consultas

Texto de opción	Argumento de cadena
Texto	Tamaño de campo texto predeterminado
Número	Tamaño de campo numérico predeterminado
Tipo de campo predeterminado	Tipo de campo predeterminado
Autoíndice en Importar/crear	Autoíndice en Importar/crear
Mostrar nombre de las tablas	Mostrar nombre de las tablas
Dar salida a todos los campos	Dar salida a todos los campos
Permitir CombinaciónAutomática	Permitir CombinaciónAutomática
Ejecutar permisos	Ejecutar permisos
Ficha Formularios/Informes

Texto de opción	Argumento de cadena
Comportamiento de selección	Comportamiento de selección
Plantilla del formulario	Plantilla del formulario
Plantilla del informe	Plantilla del informe
Usar siempre procedimientos de evento	Usar siempre procedimientos de evento
Ficha Avanzada

Texto de opción	Argumento de cadena
Bloqueo de registros predeterminado	Bloqueo de registros predeterminado
Modo de abrir predeterminado	Modo de abrir predeterminado para bases de datos
Ignorar peticiones DDE	Ignorar peticiones DDE
Permitir actualización DDE	Permitir actualización DDE
Tiempo de espera de OLE/DDE (seg)	Tiempo de espera de OLE/DDE (seg)
Número de intentos de actualización	Número de intentos de actualización
Intervalo de actualización ODBC (seg)	Intervalo de actualización ODBC (seg)
Intervalo de actualización (seg)	Intervalo de actualización (seg)
Intervalo entre intentos de actualización (mseg)	Intervalo entre intentos de actualización (mseg)
Argumentos de la línea de comandos	Argumentos de la línea de comandos
Argumentos de compilación condicional	Argumentos de compilación condicional
Nombre del proyecto	Nombre del proyecto
Interceptar errores	Interceptar errores
Nota   Si está desarrollando una aplicación de bases de datos, complementos, base de datos de biblioteca o base de datos referenciada, asegúrese de que la opción Interceptar errores está establecida a 2 (Modo de interrupción en errores no tratados) cuando haya terminada de depurar su código.

El valor que se pasa al método SetOption como el argumento valor depende de qué tipo de opción se está estableciendo. La siguiente tabla establece algunas indicaciones para establecer las opciones.

Si la opción es	Entonces el argumento valor es
Un cuadro de texto	Una cadena
Una casilla de verificación	Un valor Boolean — True (–1) o False (0)
Un botón de opciones en un grupo de opciones, o una opción en un cuadro combinado o en un cuadro de lista	Un entero correspondiente a la posición de las opciones en el grupo de opción o lista (comenzando por cero [0])


Generar instrucciones SQL que incluyan variables y controles

Cuando se trabaja con objetos de acceso a datos (DAO), puede que necesite construir una instrucción SQL en el código. Por ejemplo, si está creando un nuevo objeto QueryDef, es necesario establecer su propiedad SQL a una cadena SQL válida. Es muy posible que también necesite una instrucción SQL cuando cree un objeto Recordset.

La forma más fácil de construir una instrucción SQL es crear una consulta en la cuadrícula de diseño de la consulta, cambiar a vista SQL, y copiar y pegar la instrucción SQL correspondiente en su código.

A menudo una consulta debe estar basada en valores que suministra el usuario o que cambian en situaciones diferentes. Si éste es el caso, necesitará incluir variables o valores de control en la consulta. El motor de base de datos Microsoft Jet procesa todas las instrucciones SQL, pero no las variables o los controles. Por tanto, debe construir su instrucción SQL de forma que Microsoft Access determine primero estos valores y luego los concatene en la instrucción SQL que se pasa al motor de base de datos Jet.

El siguiente ejemplo muestra cómo crear un objeto QueryDef con una simple instrucción SQL. Esta consulta devuelve todos los pedidos desde una tabla Pedidos que fue colocada después del 31-3-96:

Dim dbs As Database, qdf As QueryDef, cadSQL As String

Set dbs = CurrentDb

cadSQL = "SELECT * FROM Pedidos WHERE FechaPedido >#3-31-96#;"

Set qdf = dbs.CreateQueryDef("SegundoTrimestre", cadSQL)

El siguiente ejemplo crea el mismo objeto QueryDef usando un valor almacenado en una variable. Observe el signo numérico (#) que denota que los valores de la fecha deben ser incluidos en la cadena de forma que sean concatenados con el valor de la fecha.

Dim dbs As Database, qdf As QueryDef, cadSQL As String

Dim dteStart As Date

dteStart = #3-31-96#

Set dbs = CurrentDb

cadSQL = "SELECT * FROM Pedidos WHERE FechaPedido" _

& "> #" & fechaComienzo & "#;"

Set qdf = dbs.CreateQueryDef("SegundoTrimestre", cadSQL)

El siguiente ejemplo crea un objeto QueryDef usando un valor en un control llamado FechaPedido en un formulario Pedidos. Observe que se suministra la referencia completa al control y que se incluye el signo numérico (#) que denota la fecha dentro de la cadena.

Dim dbs As Database, qdf As QueryDef, cadSQL As String

Set dbs = CurrentDb

cadSQL = "SELECT * FROM Pedidos WHERE FechaPedido" _

& "> #" & Forms!Pedidos!FechaPedido & "#;"

Set qdf = dbs.CreateQueryDef("SegundoTrimestre", cadSQL)


Opciones cambiadas y eliminadas en Microsoft Access 97

Las siguientes opciones existían en las versiones 1.x y 2.0 y han sido cambiadas:

Opción	Notas
Comprobación sintaxis Ancho punto de tabulación  Mostrar cuadro Ordenar/Agrupar	Estas opciones existen por compatibilidad con las versiones anteriores de Microsoft Access. Establecerlas no tiene ningún efecto, aunque no generará un error.
Ajustar objetos a la cuadrícula Mostrar la cuadrícula Mostrar la regla Macro de asignación de teclas Mover controles encerrados Asistentes para controles	Estas opciones pueden establecerse por programa, pero no están disponibles en el cuadro de diálogo Opciones.
Barras de herramientas incorporadas disponibles Permitir personalizar barras de herramientas	Esta opción ha sido substituida por las opciones Permitir el uso de las barras de herramientas personalizadas y Permitir cambios de barras de herramientas/menús en el cuadro de diálogo Inicio (disponible al hacer clic en Inicio en el menú Herramientas). No obstante, todavía puede establecer estas opciones mediante programa.
Comportamiento predeterminado de cuadrícula	Esta opción ha sido substituida por las opciones Líneas horizontales predeterminadas de la cuadrícula and Líneas verticales predeterminadas de la cuadrícula. No obstante, todavía puede establecerlas mediante programa.
Las siguientes opciones han sido eliminadas en Microsoft Access 97. Si pasa las siguientes cadenas a los métodos SetOption o GetOption, Microsoft Access generará un error en tiempo de ejecución.

Primera semana

Primer día laborable


Determinar códigos de error reservados por Visual Basic

El siguiente procedimiento crea una tabla en Microsoft Access que contiene los códigos de error y las cadenas que son usadas o están reservadas por Visual Basic. La tabla no incluye los errores de Objetos de acceso a datos (DAO).

Visual Basic reserva una parte de los primeros mil números de posibles errores, de forma que este ejemplo sólo considera los números de error entre 1 y 1000. Los demás números de error están reservados por el motor de base de datos Microsoft Jet o están disponibles para definir errores personalizados.

Sub CrearTablaErrores()

Dim dbs As Database, tdf As TableDef, fld As Field

Dim rst As Recordset, lngCódigo As Long

Const conAppObjectError = "Error definido en aplicación o en objeto "

' Crear tabla Errores con los campos NúmeroError y DescripciónError.

Set dbs = CurrentDb

Set tdf = dbs.CreateTableDef("Errores")

Set fld = tdf.CreateField("CódigoError", dbLong)

tdf.Fields.Append fld

Set fld = tdf.CreateField("CadenaError", dbText, 255)

tdf.Fields.Append fld

dbs.TableDefs.Append tdf

' Abrir recordset de tabla Errores.

Set rst = dbs.OpenRecordset("Errores")

' Bucle sobre los 1000 primeros códigos de error de Visual Basic.

For lngCode = 1 To 1000

On Error Resume Next

' Eleve cada error.

Err.Raise lngCode

DoCmd.Hourglass True

' No tener en cuenta códigos de error que generen errores de aplicación o definidos por el objeto.

If Err.Description <> conAppObjectError Then

' Agregar cada código y cadena de error a tabla Errores.

rst.AddNew

rst!ErrorCode = Err.Number

rst!ErrorString = Err.Description

rst.Update

End If

' Borrar objeto Err.

Err.Clear

Next lngCode

' Cerrar recordset.

rst.Close

DoCmd.Hourglass False

MsgBox "Creada tabla Errores."

End Sub


Convertir código que llama a una DLL

Llamar a procedimientos en la Interfaz de programación de aplicaciones de Windows

Si una base de datos creada en un versión anterior de Microsoft Access llamaba a procedimientos de la interfaz de programación de aplicaciones (application programming interface (API)) de Microsoft Windows, será necesario que haga algunos cambios en su código cuando convierta una versión 2.0 o anterior de la base de datos a Microsoft Access 97.

La API de Windows consta de un conjunto de bibliotecas de vínculo dinámico (DLLs) que contienen procedimientos relacionados con el sistema, incluyendo funciones, mensajes, estructuras de datos, tipos de datos e instrucciones que usted puede utilizar en la creación de aplicaciones que se ejecuten bajo Windows 95 o bajo la plataforma Windows NT. Para poder llamar a estos procedimientos desde Visual Basic, es necesario que primero se declaren usando una instrucción Declare. Entonces, se pueden llamar como lo haría con cualquier otro procedimiento.

Las versiones 1.x y 2.0 de Microsoft Access eran aplicaciones de 16 bits y se ejecutaban en versiones de Windows de 16 bits. Microsoft Access 97 es una aplicación de 32 bits y sólo se ejecuta bajo Windows 95 y la plataforma Windows NT. Si su código existente de Access Basic hacía llamadas a una API de Windows de 16 bits, será necesario que modifique estas llamadas cuando convierta su base de datos a Microsoft Access 97. La siguiente lista proporciona algunas sugerencias para convertir su código.

•	Compruebe las instrucciones Declare para estar seguro de que hacen referencia a las DLL correctas. En la siguiente tabla se muestran los nombres de las nuevas DLL de Windows de 32 bits.

DLL de Windows de 16 bits	DLL de Windows de 32 bits
User.dll	User32.dll
Kernel.dll	Kernel32.dll
GDI.dll	GDI32.dll
•	Los nombres de algunas funciones de la API de Windows de 32 bits han cambiado. Además, las funciones en la API de Windows de 32 bits distinguen entre mayúsculas y minúsculas. Compruébelos para estar seguro de que se ha introducido correctamente el nombre del procedimiento y del alias.

•	Algunas funciones en la API de Windows de 32 bits tienen nuevos tipos de datos de parámetros. Consulte una de las referencias listadas más adelante, en este mismo tema, para determinar qué llamadas de función deben ser actualizadas.

•	Si en su PC existiera una versión de DLL a 16 bits con el mismo nombre que una a 32 bits, Microsoft Access puede que intente llamar a una función en ese DLL si el directorio en el que reside precede al directorio que contiene la nueva versión en su ruta de acceso.

•	Algunas DLL de 32 bits contienen funciones con versiones ligeramente diferentes para acomodar tanto las cadenas de Unicode como las de ANSI. Una A al final del nombre de la función especifica la versión ANSI. Una W al final del nombre de la función especifica la versión Unicode. Si la función acepta argumentos de tipo cadena, intente adjuntar una A al nombre de la función.

Para obtener más información sobre cómo se utilizan los procedimientos API de Windows de 32 bits y cómo se portan sus aplicaciones existentes a Microsoft Access 97 de 32 bits, consulte las siguientes fuentes:

•	Windows API Viewer, disponible en Microsoft Office 97, edición para programadores, incluye la sintaxis de Visual Basic para todas las declaraciones, tipos de datos y constantes de 32 bits.

•	Microsoft Office Resource Kit contiene información sobre cómo portar sus soluciones basadas en Microsoft Office de 16 bits, incluyendo las aplicaciones desarrolladas con las versiones anteriores de Microsoft Access, a las soluciones de 32 bits.

•	Microsoft Win32 Software Development Kit ofrece una información de referencia completa sobre los procedimientos API de Windows de 32 bits.

Llamadas a código de otras DLL

Si la aplicación de su base de datos llamara a procedimientos de otras DLLs, es necesario que se cree o se obtengan las versiones de 32 bits de esas DLL y hacer las modificaciones necesarias a su código cuando convierta su base de datos a Microsoft Access 97.

Si no puede conseguir una versión de 32 bits de una DLL, necesitará una DLL intermedia que pueda convertir las llamadas de 32 bits a las de 16 bits. Para obtener más información, consulte la lista precedente de fuentes.


Objetos de Microsoft Access


Usar formatos internacionales de fecha en instrucciones SQL

En Visual Basic es necesario utilizar los formatos de fecha ingleses (Estados Unidos) en las instrucciones SQL. Sin embargo, en la cuadrícula de diseño de la consulta se pueden utilizar los formatos internacionales de fechas.


Determinar los códigos de error reservados por Microsoft Access y el motor de base de datos Microsoft Jet

El siguiente procedimiento crea una tabla que contiene muchos de los códigos y cadenas de error utilizados o reservados por Microsoft Access y por el motor de base de datos Microsoft Jet. En la tabla resultante no se incluyen todos los códigos de error, ya que algunos existen fuera del intervalo de los códigos de error evaluados por este procedimiento (0 a 4500).

Function TablaErroresAccessYJet() As Boolean

Dim dbs As Database, tdf As TableDef, fld As Field

Dim rst As Recordset, lngCode As Long

Dim cadAccessErr As String

Const conAppObjectError = "Error definido por aplicación o definido por objeto"

On Error GoTo Error_TablaErroresAccessYJet

' Crear tabla Errores con campos ErrorNumber y ErrorDescription.

Set dbs = CurrentDb

Set tdf = dbs.CreateTableDef("ErroresAccessYJet")

Set fld = tdf.CreateField("ErrorCode", dbLong)

tdf.Fields.Append fld

Set fld = tdf.CreateField("ErrorString", dbMemo)

tdf.Fields.Append fld

dbs.TableDefs.Append tdf

' Abrir recordset en tabla Errores.

Set rst = dbs.OpenRecordset("ErroresAccessYJet")

' Recorrer los códigos de error.

For lngCode = 0 To 3500

On Error Resume Next

' Elevar cada error.

cadAccessErr = AccessError(lngCode)

DoCmd.Hourglass True

' Saltar los números de error sin cadenas asociadas.

If cadAccessErr <> "" Then

' Saltar códigos que generan errores definidos por aplicación o por objeto.

If cadAccessErr <> conAppObjectError Then

' Agregar cada código y cadena de error a tabla Errores.

rst.AddNew

rst!ErrorCode = lngCode

' Anexar cadena a campo memo.

rst!ErrorString.AppendChunk cadAccessErr

rst.Update

End If

End If

Next lngCode

' Cerrar recordset.

rst.Close

DoCmd.Hourglass False

RefreshDatabaseWindow

MsgBox "Creada tabla de errores de Access y Jet."

TablaErroresAccessYJet = True

Exit_TablaErroresAccessYJet:

Exit Function

Error_TablaErroresAccessYJet:

MsgBox Err & ": " & Err.Description

TablaErroresAccessYJet = False

Resume Exit_TablaErroresAccessYJet

End Function


Método Item

El método Item devuelve un miembro determinado de una colección por posición o por tecla.

Sintaxis

objeto.Item(índice)

El método Item utiliza los siguientes argumentos.

Argumento	Descripción
objeto	La colección References.
Índice	Una expresión que especifica la posición de un miembro de la colección a la que se hace referencia en el argumento objeto. Si es una expresión numérica, el argumento índice debe ser un número desde 1 al valor de la propiedad Contar (Count) de la colección. Si es una expresión de cadena, el argumento índice debe ser el nombre de un miembro de la colección.
Comentarios

Si el valor proporcionado por el argumento índice no coincide con ningún miembro existente de la colección, se produce un error.

El método Item es el miembro predeterminado de la colección References, por lo que no es necesario que se especifique de forma explícita. Por ejemplo, las siguientes dos líneas de código son equivalentes:

Debug.Print References(1).Name

Debug.Print References.Item(1).Name


Propiedad Kind

La propiedad Kind indica el tipo de referencia que representa un objeto Reference.

Valores

La propiedad Kind es de sólo lectura y sólo puede ser leído desde Visual Basic.

La propiedad Kind devuelve los siguientes valores:

Valor	Descripción
Project (1)	El objeto Reference representa una referencia a un proyecto de Visual Basic.
TypeLib (0)	El objeto Reference representa una referencia a un archivo que contiene una biblioteca de tipos.


Método ApplyFilter

El método ApplyFilter ejecuta la acción AplicarFiltro en Visual Basic. Para obtener más información acerca de cómo funciona la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.ApplyFilter [nombrefiltro][, condiciónwhere]

El método ApplyFilter utiliza los siguientes argumentos.

Argumento	Descripción
nombrefiltro	Una expresión de cadena que es el nombre válido de una consulta en la base de datos activa.
condiciónwhere	Una expresión de cadena que es una cláusula WHERE de SQL válida sin la palabra WHERE.
Observaciones

Es necesario incluir al menos uno de los dos argumentos del método ApplyFilter. Si introduce un valor para ambos argumentos, el argumento condiciónwhere se aplica al filtro.

La longitud máxima del argumento condiciónwhere es 32.768 caracteres (al contrario que el argumento de la acción Condición WHERE de la ventana Macro, cuya longitud máxima es de 256 caracteres).

Si especifica el argumento condiciónwhere y deja en blanco el argumento nombrefiltro, debe incluir la coma del argumento nombrefiltro.


Ejemplo del método ApplyFilter

El siguiente ejemplo utiliza el método ApplyFilter para mostrar sólo los registros que contengan el nombre Rey en el campo Apellido:

DoCmd.ApplyFilter , "Apellido = 'Rey'"


Método Beep

El método Beep ejecuta la acción Bip en Visual Basic. Para obtener más información acerca de cómo funciona la acción, consulte el tema de la acción.

Sintaxis

DoCmd.Beep

Este método no utiliza argumentos.

Observaciones

También puede usar la instrucción Beep en Visual Basic para hacer que su máquina haga sonar un tono a través del altavoz.


Método CancelEvent

El método CancelEvent ejecuta la acción CancelarEvento en Visual Basic. Para obtener más información acerca de cómo funciona la acción, consulte el tema de la acción.

Sintaxis

DoCmd.CancelEvent

Este método no utiliza argumentos.

Observaciones

El método CancelEvent sólo tiene efecto cuando se ejecuta como resultado de un evento. Este método cancela el evento.

Todos los eventos que pueden ser cancelados en Visual Basic tienen un argumento Cancelar. Puede usar este argumento en lugar del método CancelEvent para cancelar el evento. El evento KeyPress y el evento MouseDown (sólo para el botón secundario) sólo pueden ser cancelados en macros, no en procedimientos de evento, con lo que debe usar la acción CancelarEvento en una macro para cancelar estos eventos.


Método Close (Microsoft Access)
Método Close

El método Close lleva a cabo la acción Cerrar en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.Close [tipoobjeto, nombreobjeto], [guardar]

El método Close utiliza los siguientes argumentos.

Argumento	Descripción
tipoobjeto	Una de la siguientes constantes intrínsecas:
	acDefault (predeterminado) acForm acMacro acModule acQuery acReport acTable
nombreobjeto	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjeto.
guardar	Una de las siguientes constantes intrínsecas:
	acSaveNo acSavePrompt (predeterminado) acSaveYes
	Si deja en blanco este argumento, se asume la constante predeterminada (acSavePrompt).
Observaciones

Si deja en blanco los argumentos tipoobjeto y nombreobjeto (se asume la constante predeterminada, acDefault, para tipoobjeto), Microsoft Access cierra la ventana activa. Si especifica el argumento guardar y deja en blanco los argumentos tipoobjeto y nombreobjeto, debe incluir las comas de los argumentos tipoobjeto y nombreobjeto.


Ejemplo del método Close (Microsoft Access)
Ejemplo del método Close

El siguiente ejemplo utiliza el método Close para cerrar el formulario Revisión de pedidos, guardando los cambios al formulario sin preguntar al usuario:

DoCmd.Close acForm, "Revisión de pedidos", acSaveYes


Método CopyObject

El método CopyObject lleva a cabo la acción CopiarObjeto en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.CopyObject [basededatosdedestino][, nuevonombre][, tipoobjetoorigen, nombreobjetoorigen]

El método CopyObject utiliza los siguientes argumentos.

Argumento	Descripción
basededatosdedestino	Una expresión de cadena que es la ruta de acceso y el nombre de archivo válidos de la base de datos en la que desea copiar el objeto. Para seleccionar la base de datos activa, deje en blanco este argumento.
	Si ejecuta código de Visual Basic que contenga el método CopyObject en una base de datos de biblioteca y deja en blanco este argumento, Microsoft Access copia el objeto en la base de datos de biblioteca.
nuevonombre	Una expresión de cadena que es el nuevo nombre del objeto que desea copia. Para usar el mismo nombre si está copiándolo a otra base de datos, deje en blanco este argumento.
tipoobjetoorigen	Una de las siguientes constantes intrínsecas:
	acDefault (predeterminado) acForm acMacro acModule acQuery acReport acTable
nombreobjetoorigen	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjetoorigen.
	Si ejecuta código Visual Basic que contenga el método CopyObject en una base de datos de biblioteca, Microsoft Access busca el objeto con este nombre primero en la base de datos de biblioteca y luego en la base de datos activa.
Observaciones

Es necesario incluir el argumento basededatosdedestino o el argumento nuevonombre o ambos con este método.

Si deja en blanco los argumentos tipoobjetoorigen y nombreobjetoorigen (se asume la constante predeterminada, acDefault, para tipoobjetoorigen), Microsoft Access copia el objeto seleccionado en la ventana Base de datos. Para seleccionar un objeto en la ventana Base de datos, puede usar la acción SeleccionarObjeto o el método SelectObject con el argumento En la ventana Base de datos establecido a Sí (True).

Si especifica los argumentos tipoobjetoorigen y nombreobjetoorigen, pero deja en blanco el argumento nuevonombre o el argumento basededatosdedestino, entonces es necesario incluir la coma del argumento nuevonombre o de basededatosdedestino. Si deja en blanco un argumento de cola, no use una coma a continuación del argumento que haya especificado.


Ejemplo del método CopyObject

El siguiente ejemplo utiliza el método CopyObject para copiar la tabla Empleados y darle un nuevo nombre en la base de datos activa:

DoCmd.CopyObject, "Copia Empleados", acTable, "Empleados"


Método DeleteObject

El método DeleteObject lleva a cabo la acción EliminarObjeto en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.DeleteObject [tipoobjeto, nombreobjeto]

El método DeleteObject utiliza los siguientes argumentos.

Argumento	Descripción
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acDefault (predeterminado) acForm acMacro acModule acQuery acReport acTable
nombreobjeto	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjeto.
	Si ejecuta código de Visual Basic que contenga el método DeleteObject en una base de datos de bibliotecas, Microsoft Access busca el objeto con este nombre primero en la base de datos de biblioteca y luego en la base de datos activa.
Observaciones

Si deja en blanco los argumentos tipoobjeto y nombreobjeto (se asume la constante predeterminada, acDefault, para tipoobjeto), Microsoft Access elimina el objeto seleccionado en la ventana Base de datos. Para seleccionar un objeto en la ventana Base de datos, puede usar la acción SeleccionarObjeto o el método SelectObject con el argumento En ventana Base de datos establecido a Sí (True).


Ejemplo del método DeleteObject

El siguiente ejemplo elimina la tabla especificada:

DoCmd.DeleteObject acTable, "Antigua tabla Empleados"


Método DoMenuItem

El método DoMenuItem lleva a cabo la acción EjecutarElementoMenú en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Nota   En Microsoft Access 97, el método DoMenuItem ha sido substituido por el método RunCommand. El método DoMenuItem se incluye en esta versión de Microsoft Access sólo por compatibilidad con las versiones anteriores. Cuando ejecute código existente de Visual Basic que contenga un método DoMenuItem, Microsoft Access mostrará el comando de menú o barra de herramientas apropiado para Microsoft Access 97. No obstante, al contrario que la acción EjecutarElementoMenú en una macro, un método DoMenuItem del código Visual Basic no se convierte a un método RunCommand cuando se convierte una base de datos creada en una versión anterior de Microsoft Access.

Algunos comandos de las versiones anteriores de Microsoft Access no están disponibles en Microsoft Access 97, y los métodos DoMenuItem que ejecutan estos comandos provocarán un error cuando sean ejecutados en Visual Basic. Es necesario que modifique el código de Visual Basic para reemplazar o eliminar las ocurrencias de tales métodos DoMenuItem. Para obtener una lista de estos comandos, vea Comandos de la acción EjecutarElementoMenú no disponibles con la acción EjecutarComando.

Sintaxis

DoCmd.DoMenuItem barramenú, nombremenú, comando[, subcomando][, versión]

El método DoMenuItem utiliza los siguientes argumentos.

Argumento	Descripción
barramenú	Use la constante intrínseca acFormBar para la barra de menús en la vista Formulario.
	Para el resto de las vistas, use el número de la vista en la lista de argumentos de la Barra de menús, como se muestra en la ventana Macro de las versiones anteriores de Microsoft Access (contar en la lista, empezando desde 0).
nombremenú	Puede usar una de las siguientes constantes intrínsecas:
	acFile acEditMenu acRecordsMenu
	Sólo puede usar acRecordsMenu para la barra de menús de la vista Formulario de Microsoft Access versión 2.0 y para las bases de datos de Microsoft Access 95.
	Para otros menús, use el número de menú de la lista del argumento Nombre de menú, como se muestra en la ventana Macro de las versiones anteriores de Microsoft Access (cuente en la lista, empezando desde 0).
comando	Puede usar una de las siguientes constantes intrínsecas:
	acNew acSaveForm acSaveFormAs acSaveRecord acUndo acCut acCopy acPaste acDelete acSelectRecord acSelectAllRecords acObject acRefresh
	Para otros comandos, use el número del comando de la lista del argumento Comando, como se muestra en la ventana Macro de las versiones anteriores de Microsoft Access (cuente en la lista, empezando desde 0).
subcomando	Puede usar una de las siguientes constantes intrínsecas:
	acObjectVerb acObjectUpdate
	La constante acObjectVerb representa el primer comando del submenú del comando Objeto del menú Edición. El tipo de objeto determina el primer comando del submenú. Por ejemplo, este comando es Editar para un objeto Paintbrush que puede ser modificado.
	Para los demás comandos de los submenús, use el número del subcomando de la lista del argumento Subcomando, como se muestra en la ventana Macro de las versiones anteriores de Microsoft Access (cuente en la lista, empezando desde 0).
versión	Use la constante intrínseca acMenuVer70 para el código escrito para las bases de datos Microsoft Access 95, la constante intrínseca acMenuVer20 para el código escrito para las bases de datos de la versión 2.0 de Microsoft Access, y la constante intrínseca acMenuVer1X para el código escrito para las bases de datos Microsoft Access versión 1.x. Este argumento sólo está disponible en Visual Basic.
	Nota   El valor predeterminado para este argumento es acMenuVer1X, de tal forma que cualquier código escrito para las bases de datos de Microsoft Access versión 1.x se ejecutarán sin cambio. Si está escribiendo código para una base de datos Microsoft Access 95 o de la versión 2.0 y desea usar los comandos de menú de estas versiones con el método DoMenuItem, debe establecer este argumento a acMenuVer70 o acMenuVer20.
	Además, cuando cuente en las listas de los argumentos de acción de la Barra de menús, Nombre de menús, Comandos, y Subcomandos en la ventana Macro para obtener los números que debe usar para los argumentos del método DoMenuItem, debe usar las listas de Microsoft Access 95 si el argumento versión es acMenuVer70, las listas de Microsoft Access versión 2.0 si el argumento versión es acMenuVer20 y las listas de Microsoft Access versión 1.x si versión es acMenuVer1X (o está en blanco).
	Nota   No hay valor de acMenuVer80 para este argumento. El método DoMenuItem no se puede usar para mostrar los comandos de Microsoft Access 97 (aunque los métodos DoMenuItem existentes en el código de Visual Basic seguirán funcionando). Use en su lugar el método RunCommand.
Observaciones

Las selecciones de las listas para los argumentos de la acción Nombre de menú, Comando y Subcomando en la ventana Macro dependen de lo que se haya seleccionado para los argumentos anteriores. Deben usarse números o constantes intrínsecas que sean apropiadas para cada argumento barramenú, nombremenú, comando y subcomando.

Si deja en blanco el argumento subcomando pero especifica el argumento versión, debe incluir la coma del argumento subcomando. Si deja en blanco los argumentos subcomando y versión, no use una coma a continuación del argumento comando.


Ejemplo del método DoMenuItem

El siguiente ejemplo utiliza el método DoMenuItem para llevar a cabo el comando Pegar del menú Edición en la vista Formulario de una base de datos Microsoft Access 95:

DoCmd.DoMenuItem acFormBar, acEditMenu, acPaste, , acMenuVer70

El siguiente ejemplo lleva a cabo el comando Mosaico del menú Ventana en la vista Formulario de una base de datos Microsoft Access versión 2.0:

DoCmd.DoMenuItem acFormBar, 4, 0, , acMenuVer20


Método Echo (objeto DoCmd)

El método Echo del objeto DoCmd lleva a cabo la acción Eco en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.Echo ecoactivo[, textobarraestado]

El método Echo utiliza los siguientes argumentos.

Argumento	Descripción
ecoactivo	Use True (–1) para activar el eco y False (0) para desactivarlo.
textobarraestado	Una expresión de cadena.
Observaciones

Si deja en blanco el argumento textobarraestado, no use una coma a continuación del argumento activareco.

Si desactiva el eco en Visual Basic, debe volver a activarlo, o permanecerá desactivado incluso si el usuario presiona CTRL+BREAK o Visual Basic encuentra un punto de interrupción. Puede que desee crear una macro que active el eco y luego asigne la macro a una combinación de teclas o a un comando de menú personalizado. Podría usar entonces la combinación de teclas o el comando de menú para activar el eco si hubiera sido desactivado en Visual Basic.

El método Echo del objeto DoCmd fue agregado para proporcionar compatibilidad hacia atrás para ejecutar la acción Eco en el código Visual Basic en Microsoft Access para Windows 95. Se recomienda que en su lugar use el método Echo del objeto Application.


Ejemplo del método Echo (objeto DoCmd)

El siguiente ejemplo utiliza el método Echo para desactivar el eco y mostrar el texto especificado en la barra de estado mientras se ejecuta el código Visual Basic:

DoCmd.Echo False, "Está ejecutándose código de Visual Basic."


Método FindNext

El método FindNext lleva a cabo la acción BuscarSiguiente en Visual Basic. Para obtener más información acerca de cómo funciona la acción, consulte el tema de la acción.

Sintaxis

DoCmd.FindNext

Este método no utiliza argumentos.


Método FindRecord

El método FindRecord lleva a cabo la acción BuscarRegistro en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.FindRecord buscar[, coincidir][, mayúsminús][, buscar][, buscarconformato][, sólocampoactivo][, buscarprimero]

El método FindRecord utiliza los siguientes argumentos.

Argumento	Descripción
buscar	Una expresión que evalúa a texto, un número o una fecha. La expresión contiene los datos a buscar.
coincidir	Una de las siguientes constantes intrínsecas:
	acAnywhere acEntire (predeterminado) acStart
	Si deja en blanco este argumento, se asume la constante predeterminada (acEntire).
mayúsminús	Use True (–1) para una búsqueda que distinga las mayúsculas de las minúsculas False (0) para una búsqueda que no distinga. Si deja en blanco este argumento, se asume el valor predeterminado (False).
buscar	Una de las siguientes constantes intrínsecas:
	acDown acSearchAll (predeterminado) acUp
	Si deja en blanco este argumento, se asume la constante predeterminada (acSearchAll).
buscarconformato	Use True para buscar datos que tienen formato y False para buscar datos tal como están almacenados en la base de datos. Si deja en blanco este argumento, se asume el valor predeterminado (False).
sólocampoactivo	Una de las siguientes constantes intrínsecas:
	acAll acCurrent (predeterminado)
	Si deja en blanco este argumento, se asume la constante predeterminada (acCurrent).
buscarprimero	Use True para iniciar la búsqueda en el primer registro. Use False para iniciar la búsqueda en el registro que sigue al registro actual. Si deja en blanco este argumento, se asume el valor predeterminado (True).
Observaciones

Puede dejar en blanco uno de los argumentos opcionales del centro de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco uno o más de los argumentos de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método FindRecord

El siguiente ejemplo busca la primera ocurrencia en los registros de nombre Smith en el campo actual. No busca ocurrencias de smith o de  Smithson.

DoCmd.FindRecord "Smith",, True,, True


Método GoToControl

El método GoToControl lleva a cabo la acción IrAControl en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.GoToControl nombrecontrol

El método GoToControl utiliza el siguiente argumento.

Argumento	Descripción
nombrecontrol	Una expresión de cadena que es el nombre de un control en el formulario u hoja de datos activa.
Observaciones

Para el argumento nombrecontrol use sólo el nombre del control, no la sintaxis completa.

Para este argumento también puede usar una variable declarada como un tipo de datos Control.

Dim ctl As Control

Set ctl = Forms!Form1!Field3

DoCmd.GoToControl ctl.Name

También puede usar el método SetFocus para trasladar el enfoque a un control en un formulario o a cualquiera de sus subformularios, o a un campo de una tabla, consulta u hoja de datos abierta del formulario. Este es el método preferido para trasladar el enfoque en Visual Basic, especialmente a los controles de los subformularios y los subformularios anidados, porque puede usar la sintaxis completa para especificar el control al que desea trasladarse.


Ejemplo del método GoToControl

El siguiente ejemplo utiliza el método GoToControl para trasladar el enfoque al campo IdEmpleado:

DoCmd.GoToControl "IdEmpleado"


Método GoToPage (objeto DoCmd)

El método GoToPage del objeto DoCmd lleva a cabo la acción IrAPágina en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.GoToPage [páginanúmero][, derecho, abajo]

El método GoToPage utiliza los siguientes argumentos.

Argumento	Descripción
páginanúmero	Una expresión numérica que es un número de página válida para el formulario activo. Si deja en blanco este argumento, el enfoque permanece en la página actual. Puede usar los argumentos derecho y abajo para mostrar la parte de la página que desea ver.
derecho	Una expresión numérica que es una compensación horizontal válida para la página.
abajo	Una expresión numérica que es una compensación vertical válida para la página.
Observaciones

Las unidades de los argumentos derecho y abajo se expresan en twips.

Si especifica los argumentos derecho y abajo y deja en blanco el argumento páginanúmero, debe incluir la coma del argumento páginanúmero. Si no especifica los argumentos derecho y abajo, no use una coma a continuación del argumento páginanúmero.

El método GoToPage del objeto DoCmd se agregó para proporcionar compatibilidad hacia atrás para ejecutar la acción GoToPage en el código Visual Basic en Microsoft Access 95. Se recomienda que en su lugar utilice el método GoToPage existente del objeto Form.


Ejemplo del método GoToPage (objeto DoCmd)

El siguiente ejemplo utiliza el método GoToPage para trasladar el enfoque a la posición especificada por las compensaciones horizontal y vertical de la segunda página del formulario activo:

DoCmd.GoToPage 2, 1440, 567


Método GoToRecord

El método GoToRecord lleva a cabo la acción IrARegistro en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.GoToRecord [tipoobjeto, nombreobjeto][, registro][, desplazamiento]

El método GoToRecord utiliza los siguientes argumentos.

Argumento	Descripción
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acActiveDataObject (predeterminado) acDataForm acDataQuery acDataTable
nombreobjeto	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjeto.
registro	Una de las siguientes constantes intrínsecas:
	acFirst acGoTo acLast acNewRec acNext (predeterminado) acPrevious
	Si deja en blanco este argumento, se asume la constante predeterminada (acNext).
desplazamiento	Una expresión numérica que representa el número de registros hacia adelante o hacia atrás al que trasladarse si se especifica acNext o acPrevious en el argumento registro o el registro al que trasladarse si especifica acGoTo en el argumento registro. La expresión debe dar como resultado un número de registro válido.
Observaciones

Si deja en blanco los argumentos tipoobjeto y nombreobjeto (se asume la constante predeterminada, acActiveDataObject, para tipoobjeto), se asume el objeto activo.

Puede dejar en blanco un argumento opcional en medio de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco uno o más argumentos de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método GoToRecord

El siguiente ejemplo utiliza el método GoToRecord para hacer activo al séptimo registro del formulario Empleados:

DoCmd.GoToRecord acDataForm, "Empleados", acGoTo, 7


Método Hourglass

El método Hourglass lleva a cabo la acción RelojDeArena en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.Hourglass relojdearenaactivo

El método Hourglass utiliza el siguiente argumento.

Argumento	Descripción
relojdearenaactivo	Use True (–1) para mostrar el icono del reloj de arena (u otro icono que haya elegido). Use False (0) para mostrar el puntero normal del mouse.


Ejemplo del método Hourglass

El siguiente ejemplo utiliza el método Hourglass para mostrar un icono reloj de arena (o cualquier otro icono que haya elegido) mientras se ejecuta el código Visual Basic:

DoCmd.Hourglass True


Método Maximize

El método Maximize lleva a cabo la acción Maximizar en Visual Basic. Para obtener más información acerca de cómo funciona la acción, consulte el tema de la acción.

Sintaxis

DoCmd.Maximize

Este método no utiliza argumentos.


Método Minimize

El método Minimize lleva a cabo la acción Minimizar en Visual Basic. Para obtener más información acerca de cómo funciona la acción, consulte el tema de la acción.

Sintaxis

DoCmd.Minimize

Este método no utiliza argumentos.


Método MoveSize

El método MoveSize lleva a cabo la acción DesplazarTamaño en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.MoveSize [derecho][, abajo][, ancho][, alto]

El método MoveSize utiliza los siguientes argumentos.

Argumento	Descripción
derecho	Una expresión numérica.
abajo	Una expresión numérica.
ancho	Una expresión numérica.
alto	Una expresión numérica.
Observaciones

Para el método MoveSize es necesario incluir al menos un argumento. Si deja en blanco un argumento, se usará el valor actual de la ventana.

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco uno o más argumentos de la cola, no use una coma a continuación del último argumento que especifique.

Las unidades del argumento están en twips.


Ejemplo del método MoveSize

El siguiente ejemplo mueve la ventana activa y cambia su alto, pero deja su ancho sin cambiar:

DoCmd.MoveSize 1440, 2400, , 2000


Método OpenForm

El método OpenForm lleva a cabo la acción AbrirFormulario en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.OpenForm nombreformulario[, vista][, nombrefiltro][, condiciónwhere][, mododatos][, modoventana][, abrirargs]

El método OpenForm utiliza los siguientes argumentos.

Argumento	Descripción
nombreformulario	Una expresión de cadena que es el nombre válido de un formulario en la base de datos activa.
	Si ejecuta código Visual Basic que contenga el método OpenForm en una base de datos de biblioteca, Microsoft Access busca el formulario con este nombre primero en la base de datos de biblioteca y luego en la base de datos activa.
vista	Una de las siguientes constantes intrínsecas:
	acDesign acFormDS acNormal (predeterminado) acPreview
	acNormal abre el formulario en la vista Formulario.
	Si deja en blanco este argumento, se asume la constante predeterminada (acNormal).
nombrefiltro	Una expresión de cadena que es el nombre válido de una consulta en la base de datos activa.
condiciónwhere	Una expresión de cadena que es una cláusula WHERE de SQL válida sin la palabra WHERE.
mododatos	Una de las siguientes constantes intrínsecas:
	acFormAdd acFormEdit acFormPropertySettings (predeterminado) acFormReadOnly
	Si deja en blanco este argumento (se asume la constante predeterminada, acFormPropertySettings), Microsoft Access abre el formulario en el modo de datos establecido por las propiedades PermitirEdiciones (AllowEdits), PermitirEliminación (AllowDeletions), PermitirAgregar (AllowAdditions) y EntradaDeDatos (DataEntry) del formulario.
modoventana	Una de las siguientes constantes intrínsecas:
	acDialog acHidden acIcon acWindowNormal (predeterminado)
	Si deja en blanco este argumento, se asume la constante predeterminada (acWindowNormal).
abrirargs	Una expresión de cadena. Esta expresión se utiliza para establecer la propiedad AbrirArgs (OpenArgs) del formulario. Este valor puede ser utilizado en el código en un módulo formulario, tal como el procedimiento de evento Abrir. A la propiedad AbrirArgs (OpenArgs) también se puede hacer referencia en macros y expresiones.
	Por ejemplo, suponga que el formulario que abra es una lista formulario continuo de clientes. Si desea que el enfoque se traslade a un registro de cliente determinado cuando se abra el formulario, puede especificar el nombre del cliente con el argumento abrirargs, y luego usar el método FindRecord para trasladar el enfoque al registro del cliente con el nombre especificado.
	Este argumento sólo está disponible en Visual Basic.
Observaciones

La longitud máxima del argumento condiciónwhere es de 32,768 caracteres (al contrario que el argumento de la acción Condición WHERE en la ventana Macro, cuya longitud máxima es de 256 caracteres).

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método OpenForm

El siguiente ejemplo abre el formulario Empleados en la vista Formulario y muestra sólo los registros que contengan King en el campo Apellido. Los registros mostrados pueden ser modificados, y se pueden agregar nuevos registros.

DoCmd.OpenForm "Empleados", , ,"Apellido = 'King'"


Método OpenModule

El método OpenModule lleva a cabo la acción AbrirMódulo en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.OpenModule [nombremódulo][, nombreprocedimiento]

El método OpenModule utiliza los siguientes argumentos.

Argumento	Descripción
nombremódulo	Una expresión de cadena que es el nombre válido del módulo de Visual Basic que desea abrir. Si deja en blanco este argumento, Microsoft Access busca en todos los módulos estándar de la base de datos el procedimiento que seleccionó con el argumento nombreprocedimiento y abre para ese procedimiento el módulo que lo contiene.
	Si ejecuta código de Visual Basic que contenga el método OpenModule en una base de datos de bibliotecas, Microsoft Access busca el módulo con este nombre primero en la base de datos de bibliotecas y luego en la base de datos activa.
nombreprocedimiento	Una expresión de cadena que es el nombre válido del procedimiento en el que abrir el módulo. Si deja en blanco este argumento, el módulo se abre en la sección Declaraciones.
Observaciones

Es necesario incluir al menos uno de los dos argumentos de la acción AbrirMódulo. Si introduce un valor para ambos argumentos, Microsoft Access abre el módulo especificado en el procedimiento que se indique.

Si deja en blanco el argumento nombreprocedimiento, no use una coma a continuación del argumento nombremódulo.


Ejemplo del método OpenModule

El siguiente ejemplo abre el módulo Funciones de utilidad en el procedimiento de la Función EstáCargado( ):

DoCmd.OpenModule "Funciones de utilidad","EstáCargado"


Método OpenQuery

El método OpenQuery lleva a cabo la acción AbrirConsulta en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.OpenQuery nombreconsulta[, vista][, mododatos]

El método OpenQuery utiliza los siguientes argumentos.

Argumento	Descripción
nombreconsulta	Una expresión de cadena que es el nombre válido de una consulta en la base de datos activa.
	Si ejecuta código de Visual Basic conteniendo el método OpenQuery en una base de datos de biblioteca, Microsoft Access busca la consulta con este nombre primero en la base de datos de biblioteca, y luego en la base de datos activa.
vista	Una de las siguientes constantes intrínsecas:
	acViewDesign acViewNormal (predeterminado) acViewPreview
	Si el argumento nombreconsulta es el nombre de una consulta de selección, referencias cruzadas, unión o paso a través cuya propiedad Devuelve registros (ReturnsRecords) está establecida a –1, acViewNormal muestra el conjunto de resultados de la consulta. Si el argumento nombreconsulta hace referencia a una consulta de acción, de definición de datos, o de paso a través cuya propiedad Devuelve registros (ReturnsRecords) está establecida a 0, acViewNormal ejecuta la consulta.
	Si deja en blanco este argumento, se asume la constante predeterminada (acViewNormal).
mododatos	Una de las siguientes constantes intrínsecas:
	acAdd acEdit (predeterminado) acReadOnly
	Si deja en blanco este argumento, se asume la constante predeterminada (acEdit).
Observaciones

Si especifica el argumento mododatos y deja en blanco el argumento vista, debe incluir la coma del argumento vista. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método OpenQuery

El siguiente ejemplo abre Consulta total ventas en la vista Hoja de datos y permite al usuario examinar, aunque no modificar o agregar registros:

DoCmd.OpenQuery "Consulta total ventas", , acReadOnly


Método OpenReport

El método OpenReport lleva a cabo la acción AbrirInforme en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.OpenReport nombreinforme[, vista][, nombrefiltro][, condiciónwhere]

El método OpenReport utiliza los siguientes argumentos.

Argumento	Descripción
nombreinforme	Una expresión de cadena que es el nombre válido de un informe en la base de datos activa.
	Si ejecuta código de Visual Basic que contenga el método OpenReport en una base de datos de biblioteca, Microsoft Access busca el informe con este nombre primero en la base de datos de biblioteca y luego en la base de datos activa.
vista	Una de las siguientes constantes intrínsecas:
	acViewDesign acViewNormal (predeterminado) acViewPreview
	acViewNormal imprime el informe inmediatamente. Si deja en blanco este argumento, se asume la constante predeterminada (acViewNormal).
nombrefiltro	Una expresión de cadena que es el nombre válido de una consulta en la base de datos activa.
condiciónwhere	Una expresión de cadena que es una cláusula WHERE de SQL válida sin la palabra WHERE.
Observaciones

La longitud máxima del argumento condiciónwhere es 32,768 caracteres (al contrario que el argumento de la acción Condición WHERE en la ventana Macro, cuya longitud máxima es de 256 caracteres).

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco uno o más argumentos de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método OpenReport

El siguiente ejemplo imprime el Informe Ventas mientras utiliza la consulta existente Filtro Informe:

DoCmd.OpenReport "Informe Ventas", acViewNormal, "Filtro Informe"


Método OpenTable

El método OpenTable lleva a cabo la acción AbrirTabla en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.OpenTable nombretabla[, vista][, mododatos]

El método OpenTable utiliza los siguientes argumentos.

Argumento	Descripción
nombretabla	Una expresión de cadena que es el nombre válido de una tabla en la base de datos activa.
	Si ejecuta código de Visual Basic que contenga el método OpenTable en una base de datos de biblioteca, Microsoft Access busca la tabla con este nombre primero en la base de datos de biblioteca y luego en la base de datos activa.
vista	Una de las siguientes constantes intrínsecas:
	acViewDesign acViewNormal (predeterminado) acViewPreview
	acViewNormal abre la tabla en la vista Hoja de datos.
	Si deja en blanco este argumento, se asume la constante predeterminada (acViewNormal).
mododatos	Una de las siguientes constantes intrínsecas:
	acAdd acEdit (predeterminado) acReadOnly
	Si deja en blanco este argumento, se asume la constante predeterminada (acEdit).
Observaciones

Si especifica el argumento mododatos y deja en blanco el argumento vista, debe incluir la coma del argumento vista. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método OpenTable

El siguiente ejemplo abre la tabla Empleados en la Vista preliminar:

DoCmd.OpenTable "Empleados", acViewPreview


Método OutputTo

El método OutputTo lleva a cabo la acción SalidaHacia en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.OutputTo tipoobjeto[, nombreobjeto][, formatosalida][, archivosalida][, autoinicio][, archivoplantilla]

El método OutputTo utiliza los siguientes argumentos.

Argumento	Descripción
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acOutputForm acOutputModule acOutputQuery acOutputReport acOutputTable
nombreobjeto	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjeto. Si desea que salga el objeto activo, especifique el tipo de objeto para el argumento tipoobjeto y deje en blanco este argumento.
	Si ejecuta código de Visual Basic que contenga el método OutputTo en una base de datos de biblioteca, Microsoft Access busca el objeto con este nombre primero en la base de datos de bibliotecas y luego en la base de datos activa.
formatosalida	Una de las siguientes constantes intrínsecas:
	acFormatASP acFormatHTML acFormatIIS acFormatRTF acFormatTXT acFormatXLS
	Si deja en blanco este argumento, Microsoft Access pregunta el formato de salida.
archivosalida	Una expresión de cadena que es el nombre completo, incluyendo la ruta de acceso, del archivo al que desea que salga el objeto.
	Si deja en blanco este argumento, Microsoft Access pregunta un nombre de archivo de salida.
autoinicio	Use True (–1) para iniciar inmediatamente la aplicación basada en Microsoft Windows, con el archivo especificado en el argumento archivosalida cargado. Use False (0) si no desea iniciar la aplicación. Este argumento se ignora con los archivos Microsoft Internet Information Server (.htx, .idc) y las páginas Active Server de Microsoft (archivos *.asp).
	Si deja en blanco este argumento, se asume el valor predeterminado (False).
archivoplantilla	Una expresión de cadena que es el nombre completo, incluyendo la ruta de acceso, del archivo que desea usar como plantilla para un archivo HTML, HTX o ASP.
Observaciones

El formato de salida de los módulos sólo puede ser Texto MS-DOS, de tal forma que si especifica acOutputModule para el argumento tipoobjeto, debe especificar acFormatTXT para el argumento formatosalida. Los formatos de Microsoft Internet Information Server y el formato de páginas Active Server de Microsoft sólo están disponibles para las tablas, consultas y formularios, con lo que si especifica acFormatIIS o acFormatASP para el argumento formatosalida, debe especificar acOutputTable, acOutputQuery o acOutputForm para el argumento tipoobjeto.

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método OutputTo

El siguiente ejemplo muestra la salida de la tabla Empleados en formato .rtf (rich-text format) al archivo Empleados.rtf y abre inmediatamente el archivo en Microsoft Word para Windows:

DoCmd.OutputTo acOutputTable, "Empleados", acFormatRTF, "Empleado.rtf", True


Método PrintOut

El método PrintOut lleva a cabo la acción Imprimir en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.PrintOut [intervaloimpresión][, desdepágina, hastapágina][, calidadimpresión][, copias][, intercalarcopias]

El método PrintOut utiliza los siguientes argumentos.

Argumento	Descripción
intervaloimpresión	Una de las siguientes constantes intrínsecas:
	acPrintAll (predeterminado) acSelection acPages
	Si deja en blanco este argumento, se asume la constante predeterminada (acPrintAll).
desdepágina	Una expresión numérica que es un número de página válida en el formulario u hoja de datos activa. Este argumento es obligatorio si especifica acPages en el argumento intervaloimpresión.
hastapágina	Una expresión numérica que es un número de página válido en el formulario u hoja de datos activa. Este argumento es obligatorio si especifica acPages en el argumento intervaloimpresión.
calidadimpresión	Una de las siguientes constantes intrínsecas:
	acDraft acHigh (predeterminado) acLow acMedium
	Si deja en blanco este argumento, se asume la constante predeterminada (acHigh).
copias	Una expresión numérica. Si deja en blanco este argumento, se asume el valor predeterminado (1).
intercalarcopias	Use True (–1) para intercalar copias y False (0) para imprimir sin intercalar. Si deja en blanco este argumento, se asume el valor predeterminado (True).
Observaciones

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco uno o más argumentos de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método PrintOut

El siguiente ejemplo imprime dos copias intercaladas de las cuatro primeras páginas del formulario u hoja de datos activa:

DoCmd.PrintOut acPages, 1, 4, , 2


Método Quit (objeto DoCmd)

El método Quit del objeto DoCmd lleva a cabo la acción Salir en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.Quit [opciones]

El método Quit utiliza el siguiente argumento.

Argumento	Descripción
opciones	Una de las siguientes constantes intrínsecas:
	acQuitPrompt acQuitSaveAll (predeterminado) acQuitSaveNone
	Si deja en blanco este argumento, se asume la constante predeterminada (acQuitSaveAll).
Observaciones

El método Quit del objeto DoCmd se agregó para proporcionar compatibilidad hacia atrás para ejecutar la acción Salir en el código de Visual Basic en Microsoft Access versión 7.0. Se recomienda que en su lugar utilice el método Quit existente del objeto Application.


Ejemplo del método Quit (objeto DoCmd)

El siguiente ejemplo muestra un cuadro o cuadros de diálogo que preguntan si desea guardar algún objeto que haya cambiado antes de salir de Microsoft Access:

DoCmd.Quit acQuitPrompt


Método Rename

El método Rename lleva a cabo la acción CambiarNombre en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.Rename nuevonombre[, tipoobjeto, nombreanterior]

El método Rename utiliza los siguientes argumentos.

Argumento	Descripción
nuevonombre	Una expresión de cadena que es el nuevo nombre del objeto al que desea cambiar el nombre. El nombre debe seguir las reglas para nombrar objetos de los objetos de Microsoft Access.
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acDefault (predeterminado) acForm acMacro acModule acQuery acReport acTable
nombreanterior	Una expresión de cadena que es el nombre válido de un objeto del tipo especificado por el argumento tipoobjeto.
	Si ejecuta código de Visual Basic que contenga el método Rename en una base de datos de biblioteca, Microsoft Access busca el objeto con este nombre primero en la base de datos de biblioteca y luego en la base de datos activa.
Observaciones

Si deja en blanco los argumentos tipoobjeto y nombreanterior (se asume la constante predeterminada, acDefault, para tipoobjeto), Microsoft Access cambia el nombre del objeto seleccionado en la ventana Base de datos. Para seleccionar un objeto en la ventana Base de datos, puede usar la acción SeleccionarObjeto o el método SelectObject con el argumento En ventana Base de datos establecido a Sí (True).

Si deja en blanco los argumentos tipoobjeto y nombreanterior, no use una coma a continuación del argumento nuevonombre.


Ejemplo del método Rename

El siguiente ejemplo cambia el nombre a la tabla Empleados con el nombre especificado:

DoCmd.Rename "Antigua tabla Empleados", acTable, "Empleados"


Método RepaintObject

El método RepaintObject lleva a cabo la acción RepintarObjeto en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.RepaintObject [tipoobjeto, nombreobjeto]

El método RepaintObject utiliza los siguientes argumentos.

Argumento	Descripción
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acDefault (predeterminado) acForm acMacro acModule acQuery acReport acTable
nombreobjeto	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjeto.
Observaciones

El método RepaintObject sin argumentos (se asume la constante predeterminada, acDefault, para el argumento tipoobjeto) repinta la ventana activa.

El método RepaintObject del objeto DoCmd fue agregado para proporcionar compatibilidad hacia atrás para ejecutar la acción RepintarObjeto en el código de Visual Basic en Microsoft Access 95. Si desea repintar un formulario, se recomienda que en su lugar utilice el método Repaint existente en el objeto Formulario (Form).


Ejemplo del método RepaintObject

El siguiente ejemplo repinta la tabla Clientes:

DoCmd.RepaintObject acTable, "Clientes"


Método Requery (objeto DoCmd)

El método Requery del objeto DoCmd lleva a cabo la acción NuevaConsulta en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.Requery [nombrecontrol]

El método Requery utiliza los siguientes argumentos.

Argumento	Descripción
nombrecontrol	Una expresión de cadena que es el nombre de un control en el objeto activo.
Observaciones

Use sólo el nombre del control en el argumento nombrecontrol, no la sintaxis completa.

Para este argumento puede usar también una variable declarada como un tipo de datos Control:

Dim ctlLstBox As Control

Set ctlLstBox = Forms!Form1!Field3

DoCmd.Requery ctlLstBox.Name

El método Requery del objeto DoCmd es distinto del método Requery de Visual Basic. El método Requery del objeto DoCmd se agregó para proporcionar compatibilidad hacia atrás para ejecutar la acción NuevaConsulta en el código Visual Basic en Microsoft Access 95. Si desea volver a consultar a un control que no esté en el objeto activo, debe usar el método Requery en Visual Basic, no la acción NuevaConsulta o su método Requery correspondiente del objeto DoCmd. El método Requery en Visual Basic es más rápido que la acción NuevaConsulta o el método DoCmd.Requery. Además, cuando usa la acción NuevaConsulta o el método DoCmd.Requery, Microsoft Access cierra la consulta y vuelve a cargarla desde la base de datos, pero cuando usa el método Requery, Microsoft Access vuelve a ejecutar la consulta sin cerrar y volver a cargarla.

Nota   El método Requery para los objetos de acceso a datos (DAO) funciona de la misma forma que el método Requery de Microsoft Access.


Ejemplo del método Requery (objeto DoCmd)

El siguiente ejemplo utiliza el método Requery para actualizar el control ListaEmpleados:

DoCmd.Requery "ListaEmpleados"


Método Restore

El método Restore lleva a cabo la acción Restaurar en Visual Basic. Para obtener más información acerca de cómo funciona la acción, consulte el tema de la acción.

Sintaxis

DoCmd.Restore

Este método no utiliza argumentos.


Método RunMacro

El método RunMacro lleva a cabo la acción EjecutarMacro en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.RunMacro nombremacro[, númerorepeticiones][, expresiónrepetición]

El método RunMacro utiliza los siguientes argumentos.

Argumento	Descripción
nombremacro	Una expresión de cadena que es el nombre válido de una macro en la base de datos activa.
	Si ejecuta código de Visual Basic que contenga el método RunMacro en una base de datos de biblioteca, Microsoft Access busca la macro con este nombre en la base de datos de biblioteca y no la busca en la base de datos activa.
númerorepeticiones	Una expresión numérica que evalúa a un número entero, que es el número de veces que se ejecutará la macro.
expresiónrepetición	Una expresión numérica que se evalúa cada vez que se ejecuta la macro. Cuando se evalúa a False (0), la macro detiene su ejecución.
Observaciones

Puede usar la sintaxis nombregrupomacros.nombremacro para el argumento nombremacro para ejecutar una macro determinada en un grupo de macros.

Si especifica el argumento expresiónrepetición y deja en blanco el argumento númerorepeticiones, debe incluir la coma del argumento númerorepeticiones. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método RunMacro

El siguiente ejemplo ejecuta la macro Imprimir Ventas:

DoCmd.RunMacro "Imprimir Ventas"


Método RunSQL

El método RunSQL lleva a cabo la acción EjecutarSQL en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.RunSQL instrucciónsql[, usartransacción]

El método RunSQL utiliza los siguientes argumentos.

Argumento	Descripción
instrucciónsql	Una expresión de cadena que es una Instrucción SQL válida para una consulta de acción o una consulta de definición de datos. Utiliza una instrucción INSERT INTO, DELETE, SELECT...INTO, UPDATE, CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, o DROP INDEX. Incluya una cláusula IN si desea tener acceso a otra base de datos.
usartransacción	Use True (–1) para incluir esta consulta en una transacción. Use False (0) si no desea usar una transacción. Si deja en blanco este argumento, se asume el valor predeterminado (True).
Observaciones

La longitud máxima del argumento instrucciónsql es de 32.768 caracteres (al contrario que el argumento de la acción Instrucción SQL en la ventana Macro, cuya longitud máxima es de 256 caracteres).

Si deja en blanco el argumento usartransacción, no use una coma a continuación del argumento instrucciónsql.


Ejemplo del método RunSQL

El siguiente ejemplo actualiza la tabla Empleados, cambiando el cargo de cada director de ventas a Director regional de ventas:

DoCmd.RunSQL "UPDATE Empleados " & _

"SET Empleados.Cargo = 'Director regional de ventas' " & _

"WHERE Empleados.Cargo = 'Director de ventas';"


Método Save

El método Save lleva a cabo la acción Guardar en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.Save [tipoobjeto, nombreobjeto]

El método Save utiliza los siguientes argumentos.

Argumento	Descripción
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acDefault (predeterminado) acForm acMacro acModule acQuery acReport acTable
nombreobjeto	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjeto.
Observaciones

Si deja en blanco los argumentos tipoobjeto y nombreobjeto (se asume la constante predeterminada, acDefault, para el argumento tipoobjeto), Microsoft Access guarda el objeto activo. Si deja en blanco el argumento tipoobjeto, pero introduce un nombre en el argumento nombreobjeto, Microsoft Access guarda el objeto activo con el nombre especificado. Si introduce un tipo de objeto en el argumento tipoobjeto, debe introducir el nombre de un objeto existente en el argumento nombreobjeto.

Si deja en blanco el argumento tipoobjeto, pero introduce un nombre en el argumento nombreobjeto, debe incluir la coma del argumento tipoobjeto.

Nota   El método Save no se puede usar para guardar alguno de los siguientes con un nombre nuevo:

•	Un formulario en la vista Formulario o en la vista Hoja de datos.

•	Un informe en la Vista preliminar.

•	Un módulo.

El método Save, tanto si se ejecuta en la base de datos activa o en una base de datos de biblioteca, guarda siempre el objeto especificado o el objeto activo en la base de datos en la que se creó el objeto.


Ejemplo del método Save

El siguiente ejemplo utiliza el método Save para guardar el formulario llamado "Formulario Nuevos empleados". Este formulario debe estar abierto cuando se ejecuta el código que contenga este método.

DoCmd.Save acForm, "Formulario Nuevos empleados"


Método SelectObject

El método SelectObject lleva a cabo la acción SeleccionarObjeto en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.SelectObject tipoobjeto[, nombreobjeto][, enventanabasededatos]

El método SelectObject utiliza los siguientes argumentos.

Argumento	Descripción
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acForm acMacro acModule acQuery acReport acTable
	Nota   La constante acDefault, que aparece en la lista Miembros de lista automáticos para este argumento, no es válida para este argumento. Debe elegir una de las constantes enumeradas anteriormente.
nombreobjeto	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjeto. Este es un argumento requerido, a menos que especifique True (–1) en el argumento enventanabasededatos. Si especifica True en el argumento enventanabasededatos y deja en blanco el argumento nombreobjeto, Microsoft Access selecciona la ficha de la ventana Base de datos que corresponda al objeto de base de datos que especifique en el argumento tipoobjeto.
enventanabasededatos	Use True para seleccionar el objeto de la ventana Base de datos. Use False (0) para seleccionar un objeto que ya está abierto. Si deja en blanco este argumento, se asume el valor predeterminado (False).
Observaciones

Si establece el argumento enventanabasededatos a True y deja en blanco el argumento nombreobjeto, debe incluir la coma del argumento nombreobjeto. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método SelectObject

El siguiente ejemplo selecciona el formulario Clientes en la ventana Base de datos:

DoCmd.SelectObject acForm, "Clientes", True


Método SendObject

El método SendObject lleva a cabo la acción EnviarObjeto en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.SendObject [tipoobjeto][, nombreobjeto][, formatosalida][, para][, copia][, cco][, asunto][, textomensaje][, modificarmensaje][, archivoplantilla]

El método SendObject utiliza los siguientes argumentos.

Argumento	Descripción
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acSendForm acSendModule acSendNoObject (predeterminado) acSendQuery acSendReport acSendTable
nombreobjeto	Una expresión de cadena que es el nombre válido de un objeto del tipo seleccionado por el argumento tipoobjeto. Si desea incluir el objeto activo en el mensaje de correo, especifique el tipo del objeto con el argumento tipoobjeto y deje en blanco este argumento. Si deja en blanco ambos argumentos tipoobjeto y nombreobjeto (se asume la constante predeterminada, acSendNoObject, para el argumento tipoobjeto), Microsoft Access envía un mensaje a la aplicación de correo electrónico sin incluir un objeto de base de datos.
	Si ejecuta código de Visual Basic que contenga el método SendObject en una base de datos de biblioteca, Microsoft Access busca el objeto con este nombre primero en la base de datos de bibliotecas y luego en la base de datos activa.
formatosalida	Una de las siguientes constantes intrínsecas:
	acFormatHTML  acFormatRTF acFormatTXT acFormatXLS
	Si deja en blanco este argumento, Microsoft Access pregunta por el formato de salida.
para	Una expresión de cadena que enumera los receptores cuyos nombres desea colocar en la línea Para del mensaje de correo.
	Separe los nombres de los receptores que especifique en este argumento y en los argumentos copia y bcc con un punto y coma (;) o con el separador de lista establecido en la ficha Números del cuadro de diálogo Propiedades de la configuración regional del Panel de control de Windows. Si los nombres de los receptores no son reconocidos por la aplicación de correo, no se envía el mensaje.
	Si deja en blanco este argumento, Microsoft Access pregunta por los receptores.
copia	Una expresión de cadena que enumera los receptores cuyos nombres desea colocar en la línea Copia del mensaje de correo. Si deja en blanco este argumento, la línea Copia del mensaje de correo queda en blanco.
cco	Una expresión de cadena que enumera los receptores cuyos nombres desea colocar en la línea Cco del mensaje de correo. Si deja en blanco este argumento, la línea Cco del mensaje de correo queda en blanco.
asunto	Una expresión de cadena que contiene el texto que desea colocar en la línea Asunto del mensaje de correo. Si deja en blanco este argumento, la línea Asunto del mensaje de correo queda en blanco.
textomensaje	Una expresión de cadena que contiene el texto que desee incluir en el texto del mensaje de correo, después del objeto. Si deja en blanco este argumento, el objeto será todo lo que se incluya en el texto del mensaje de correo.
modificarmensaje	Use True (–1) para abrir inmediatamente la aplicación de correo electrónico con el mensaje cargado, de forma que el mensaje pueda ser modificado. Use False (0) para enviar el mensaje sin modificarlo. Si deja en blanco este argumento, se asume el valor predeterminado (True).
archivoplantilla	Una expresión de cadena que es el nombre completo, incluyendo la ruta de acceso, del archivo que desea usar como plantilla para un archivo HTML.
Observaciones

Los módulos solo pueden ser enviados en formato Texto MS-DOS, de tal forma que si especifica acSendModule en el argumento tipoobjeto, debe especificar acFormatTXT en el argumento formatosalida.

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método SendObject

El siguiente ejemplo incluye la tabla Empleados en un mensaje de correo en formato Microsoft Excel y especifica las líneas Para, Copia y Asunto en el mensaje de correo. El mensaje se envía inmediatamente, sin modificar.

DoCmd.SendObject acSendTable, "Empleados", acFormatXLS, _

"Nancy Davolio; Andrew Fuller", "Joan Weber", , _

"Hoja de cálculo actual del empleados", , False


Método SetMenuItem

El método SetMenuItem lleva a cabo la acción EstablecerElementoDelMenú en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Nota   El método SetMenuItem sólo funciona con las barras de menús y las barras de menús generales personalizadas creadas usando macros de barras de menús. El método SetMenuItem sólo se incluye en esta versión de Microsoft Access por compatibilidad con las versiones anteriores. No funciona con la funcionalidad de las nuevas barras de comandos.

Sintaxis

DoCmd.SetMenuItem índicemenú[, índicecomando][, índicesubcomando][, indicador]

El método SetMenuItem utiliza los siguientes argumentos.

Argumento	Descripción
índicemenú	Un número entero, contando desde 0, que es el índice válido de un menú en la barra de menús o barra de menú general personalizada para la ventana activa, como se define en la macro de barra de menús para la barra de menús o barra de menús general personalizada.
	Si selecciona un menú con este argumento y deja en blanco los argumentos índicecomando y índicesubcomando (o los establece a –1), puede activar o desactivar el propio nombre de menú. Sin embargo, no se puede comprobar o quitar la comprobación a un nombre de menú (Microsoft Access ignora los valores de acMenuCheck y acMenuUncheck del argumento indicador para los nombres de menús).
índicecomando	Un número entero, contando desde 0, que es el índice válido de un comando del menú seleccionado por el argumento índicemenú, como se define en el grupo de macros que define al menú seleccionado para la barra de menús personalizada o la barra de menús general personalizada para la ventana activa.
índicesubcomando	Un número entero, contando desde 0, que es el índice válido de un subcomando del submenú seleccionado por el argumento índicecomando, como se define en el grupo de macros que define el submenú seleccionado para la barra de menús personalizada o la barra de menús general personalizada para la ventana activa.
indicador	Una de las siguientes constantes intrínsecas:
	acMenuCheck acMenuGray acMenuUncheck acMenuUngray (predeterminado)
	Si deja en blanco este argumento, se asume la constante predeterminada (acMenuUngray).
Observaciones

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.


Ejemplo del método SetMenuItem

El siguiente ejemplo utiliza el método SetMenuItem para desactivar el segundo comando del primer menú de la barra de menús personalizada para la ventana activa:

DoCmd.SetMenuItem 0, 1, , acMenuGray


Método SetWarnings

El método SetWarnings lleva a cabo la acción EstablecerAdvertencias en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.SetWarnings activaradvertencias

El método SetWarnings utiliza el siguiente argumento.

Argumento	Descripción
activaradvertencias	Use True (–1) para activar la presentación de los mensajes del sistema y False (0) para desactivarla.
Observaciones

Si desactiva la presentación de mensajes del sistema en Visual Basic, debe activarlos de nuevo, o permanecerán desactivados incluso si el usuario presiona CTRL+BREAK o Visual Basic encuentra un punto de interrupción. Puede que desee crear una macro que active la presentación de los mensajes y luego asigne esa macro a una combinación de teclas o a un comando de menú personalizado. Entonces podría usar la combinación de teclas o el comando de menú para activar la presentación de los mensajes del sistema si han sido desactivados en Visual Basic.


Ejemplo del método SetWarnings

El siguiente ejemplo desactiva la presentación de los mensajes del sistema:

DoCmd.SetWarnings False


Método ShowAllRecords

El método ShowAllRecords lleva a cabo la acción MostrarTodosRegistros en Visual Basic. Para obtener más información acerca de cómo funciona la acción, consulte el tema de la acción.

Sintaxis

DoCmd.ShowAllRecords

Este método no utiliza argumentos.


Método ShowToolbar

El método ShowToolbar lleva a cabo la acción MostrarBarraDeHerramientas en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Nota   El método ShowToolbar sólo afecta a las barras de herramientas, no a las barras de menús o a los menús contextuales.

Sintaxis

DoCmd.ShowToolbar nombrebarraherramientas[, mostrar]

El método ShowToolbar utiliza los siguientes argumentos.

Argumento	Descripción
nombrebarraherramientas	Una expresión de cadena que es el nombre válido de una barra de herramientas incorporada de Microsoft Access o una barra de herramientas personalizada que haya creado.
	Si ejecuta código de Visual Basic que contenga el método ShowToolbar en una base de datos de biblioteca, Microsoft Access busca la barra de herramientas con este nombre primero en la base de datos de biblioteca y luego en la base de datos activa.
mostrar	Una de las siguientes constantes intrínsecas:
	acToolbarNo acToolbarWhereApprop acToolbarYes (predeterminado)
	Si deja en blanco este argumento, se asume la constante predeterminada (acToolbarYes).
Observaciones

Si deja en blanco el argumento mostrar, no use una coma a continuación del argumento nombrebarraherramientas.


Ejemplo del método ShowToolbar

El siguiente ejemplo muestra la barra de herramientas personalizada llamada BarraDeHerramientasPersonalizada en todas las ventanas Microsoft Access que se vuelvan activas:

DoCmd.ShowToolbar "BarraDeHerramientasPersonalizada", acToolbarYes


Método TransferDatabase

El método TransferDatabase lleva a cabo la acción TransferirBaseDatos en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.TransferDatabase [tipotransferencia], tipobasededatos, nombrebasedatos[, tipoobjeto], origen, destino[, sóloestructura][, guardariddeinicio]

El método TransferDatabase utiliza los siguientes argumentos.

Argumento	Descripción
tipotransferencia	Una de las siguientes constantes intrínsecas:
	acExport acImport (predeterminado) acLink
	Si deja en blanco este argumento, se asume la constante predeterminada (acImport).
tipobasededatos	Una expresión de cadena que es el nombre de uno de los tipos de bases de datos que puede usar para importar, exportar o vincular datos.
	En la ventana Macro, puede ver los tipos de bases de datos en la lista del argumento de la acción Tipo de base de datos de la acción TransferirBasedatos.
nombrebasedatos	Una expresión de cadena que es el nombre completo, incluyendo la ruta de acceso, de la base de datos que desea usar para importar, exportar o vincular datos.
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acForm acMacro acModule acQuery acReport acTable (predeterminado)
	Este es el tipo de objetos cuyos datos desea importar, exportar, o vincular. Sólo puede especificar un objeto que no sea acTable si está importando o exportando datos entre dos bases de datos de Microsoft Access. Si está exportando los resultados de una consulta de selección de Microsoft Access a otro tipo de base de datos, especifique acTable para este argumento.
	Si deja en blanco este argumento, se asume la constante predeterminada (acTable).
	Nota   La constante acDefault, que aparece en la lista de Miembros de lista automáticos para este argumento, no es válida para este argumento. Debe elegir una de las constantes enumeradas anteriormente.
origen	Una expresión de cadena que es el nombre del objeto cuyos datos desea importar, exportar, o vincular.
destino	Una expresión de cadena que es el nombre del objeto importado, exportado o vinculado en la base de datos de destino.
sóloestructura	Use True (–1) para importar o exportar sólo la estructura de una tabla de base de datos. Use False (0) para importar o exportar la estructura de la tabla junto con sus datos.
	Si deja en blanco este argumento, se asume el valor predeterminado (False).
guardariddeinicio	Use True para almacenar la identificación de inicio de sesión (ID) y la contraseña de una base de datos ODBC en la cadena de conexión para una tabla vinculada desde la base de datos. Si hace esto, no tiene que iniciar sesión cada vez que abra la tabla. Use False si no desea almacenar la Id de inicio de sesión y la contraseña.
	Si deja en blanco este argumento, se asume el valor predeterminado (False).
	Este argumento sólo está disponible en Visual Basic.
Observaciones

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.

El administrador de una base de datos ODBC puede desactivar la característica proporcionada por el argumento guardariddeinicio, que requiere que todos los usuarios introduzcan la Id de inicio de sesión y la contraseña cada vez que se conectan a la base de datos ODBC.

Nota   Aunque el método TransferDatabase se puede usar en Visual Basic para vincular tablas, se recomienda que use en su lugar objetos de acceso a datos (DAO). Para crear un vínculo usando DAO, use la propiedad Connect del objeto TableDef.


Ejemplo del método TransferDatabase

El siguiente ejemplo importa el informe Ventas NO de abril desde la base de datos de Microsoft Access NOVentas.mdb al informe Ventas corporativas de abril en la base de datos activa:

DoCmd.TransferDatabase acImport, "Microsoft Access", _

"C:\DBS\NOVentas.mdb", acReport, "Ventas NO de abril", _

"Ventas corporativas de abril"

El siguiente ejemplo vincula la tabla de la base de datos ODBC Autores a la base de datos activa:

DoCmd.TransferDatabase acLink, "Base de datos ODBC", _

"ODBC;DSN=DatosOrigen1;UID=Usuario2;PWD=www;LANGUAGE=us_english;" _

& "DATABASE=pubs", acTable, "Autores", "dboAuthors"


Método TransferSpreadsheet

El método TransferSpreadsheet lleva a cabo la acción TransferirHojaCálculo en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.TransferSpreadsheet [tipotransferencia][, tipohojacálculo], nombretabla, nombrearchivo[, contienenombresdecampos][, intervalo]

4

El método TransferSpreadsheet utiliza los siguientes argumentos.

Argumento	Descripción
tipotransferencia	Una de las siguientes constantes intrínsecas:
	acImport (predeterminado) acExport acLink
	Si deja en blanco este argumento, se asume la constante predeterminada (acImport).
tipohojacálculo	Una de las siguientes constantes intrínsecas, o valor numérico equivalente:
	0  acSpreadsheetypeExcel3 (predeterminado) 6  acSpreadsheetypeExcel4 5  acSpreadsheetypeExcel5 5  acSpreadsheetypeExcel7 8  acSpreadsheetypeExcel97 2  acSpreadsheetypeLotusWK1 3  acSpreadsheetypeLotusWK3 7  acSpreadsheetypeLotusWK4 4  acSpreadsheetypeLotusWJ2 — Sólo en la versión Japonesa
	Nota   Puede vincular los datos a un archivo de hoja de cálculo Lotus 1-2-3, pero estos datos son de sólo lectura en Microsoft Access. Puede importar desde y vincular (sólo lectura) a Lotus .WK4, pero no puede exportar datos Microsoft Access a este formato de hoja de cálculo. Usando este método, Microsoft Access tampoco es compatible ya con la importación, exportación o vinculación de datos de hojas de cálculo Lotus .WKS o Microsoft Excel versión 2.0.
	Si deja en blanco este argumento, se asume la constante predeterminada (acSpreadsheetExcel3).
nombretabla	Una expresión de cadena que es el nombre de la tabla Microsoft Access a la que desea importar datos de hojas de cálculo, de la que desea exportar datos de hojas de cálculo o a la que desea vincular datos de hojas de cálculo o la consulta de selección Microsoft Access cuyos resultados desea exportar a una hoja de cálculo.
nombrearchivo	Una expresión de cadena que es el nombre de archivo y la ruta de acceso de la hoja de cálculo de la que desea importar, exportar o vincular.
Contienenombres decampos	Use True (–1) para usar la primera fila de la hoja de cálculo como nombres de campos cuando importe o vincule. Use False (0) para tratar la primera fila de la hoja de cálculo como datos normales. Si deja en blanco este argumento, se asume el valor predeterminado (False).
	Cuando exporte datos de una tabla Microsoft Access o de una consulta de selección a una hoja de cálculo, los nombres de campos se insertan en la primera fila de la hoja de cálculo, independientemente de lo que introduzca en este argumento.
intervalo	Una expresión de cadena que es un intervalo válido de celdas o el nombre de un intervalo en la hoja de cálculo. Este argumento sólo se aplica a la importación. Deje en blanco este argumento para importar la hoja de cálculo completa.
	Cuando exporta a una hoja de cálculo, debe dejar en blanco este argumento. Si introduce un intervalo, fallará la exportación.
Observaciones

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.

Nota   Aunque se puede usar el método TransferSpreadsheet en Visual Basic para vincular datos de hojas de cálculo, se recomienda que use por el contrario objetos de acceso a datos (DAO). Para crear un vínculo usando DAO, use la propiedad Connect del objeto TableDef.


Ejemplo del método TransferSpreadsheet

El siguiente ejemplo importa los datos desde el intervalo especificado de la hoja de cálculo Lotus Newemps.wk3 a la tabla Empleados de Microsoft. Usa la primera fila de la hoja de cálculo como nombres de los campos.

DoCmd.TransferSpreadsheet acImport, 3, "Empleados","C:\Lotus\Newemps.wk3", True, "A1:G12"


Método TransferText

El método TransferText lleva a cabo la acción TransferirTexto en Visual Basic. Para obtener más información acerca de cómo funcionan la acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.TransferText [tipotransferencia][, nombreespecificación], nombretabla, nombrearchivo[, contienenombresdecampo][, nombretablaHTML]

El método TransferText utiliza los siguientes argumentos.

Argumento	Descripción
tipotransferencia	Una de las siguientes constantes intrínsecas:
	acExportDelim acExportFixed acExportHTML acExportMerge acImportDelim (predeterminado) acImportFixed acImportHTML acLinkDelim acLinkFixed acLinkHTML
	Si deja en blanco este argumento, se asume la constante predeterminada (acImportDelim).
	Nota   Puede vincular a datos en un archivo de texto o un archivo HTML, pero estos datos son de sólo lectura en Microsoft Access.
nombreespecificación	Una expresión de cadena que es el nombre de una especificación de importación o exportación que ha creado y guardado en la base de datos activa.
	Este argumento es obligatorio para los archivos de texto de ancho fijo. Para los archivos de texto delimitados y los archivos de combinación de datos de correo de Microsoft Word, puede dejar en blanco este argumento para seleccionar las especificaciones predeterminadas de importación/exportación. Este argumento no se aplica a los archivos HTML.
nombretabla	Una expresión de cadena que es el nombre de la tabla Microsoft Access a la que desea importar datos de texto, de la que desea exportar datos de texto o a la que desea vincular, o la consulta de selección de Microsoft Access cuyos resultados desea exportar a un archivo de texto.
nombrearchivo	Una expresión de cadena que es el nombre completo, incluyendo la ruta de acceso, del archivo de texto que desea importar, exportar o vincular.
Contienenombres decampo	Use True (–1) para usar la primera fila del archivo de texto como nombres de campos cuando importe, exporte, o vincule. Use False (0) para tratar la primera fila del archivo de texto como datos normales. Si deja en blanco este argumento, se asume el valor predeterminado (False).
	Este argumento se ignora para los archivos de combinación de datos de correo de Microsoft Word, que siempre deben contener los nombres de los campos en la primera fila.
NombretablaHTML	Una expresión de cadena que es el nombre de la tabla o lista en el archivo HTML que desea importar o vincular. Este argumento es ignorado a menos que el argumento tipotransferencia esté establecido a acImportHTML o acLinkHTML. Si deja en blanco este argumento, se importa o vincula la primera tabla o lista del archivo HTML.
	El nombre de la tabla o lista en el archivo HTML es determinado por el texto especificado por la marca <CAPTION>, si es que hay alguna. Si no hay marca <CAPTION>, el nombre se determina por el texto especificado por la marca <TITLE>. Si hay más de una tabla o lista con el mismo nombre, Microsoft Access las distingue agregando un número al final de cada nombre de la tabla o lista; por ejemplo, Empleados1 y Empleados2.
Observaciones

Puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero debe incluir la coma del argumento. Si deja en blanco un argumento de la cola, no use una coma a continuación del último argumento que especifique.

Nota   Aunque puede usar el método TransferText en Visual Basic para vincular a datos de texto, se recomienda que use en su lugar objetos de acceso a datos (DAO). Para crear un vínculo usando DAO, use la propiedad Connect del objeto TableDef.


Ejemplo del método TransferText

El siguiente ejemplo exporta los datos desde la tabla de Microsoft Access Informe externo al archivo de texto delimitado Abril.doc usando la especificación Salida estándar:

DoCmd.TransferText acExportDelim, "Salida estándar", _

"Informe externo", "C:\Txtfiles\Abril.doc"


Método Echo (Objeto Application)

El método Echo especifica si Microsoft Access vuelve a pintar o actualiza la pantalla.

Sintaxis

Application.Echo ecoActivo[, textoBarraEstado]

El método Echo tiene estos argumentos.

Argumento	Descripción
echoActivo	True (predeterminado) indica que la pantalla se actualiza; False indica que la pantalla no se actualiza.
textoBarraEstado	Una expresión de cadena que especifica el texto que se mostrará en la barra de estado cuando la actualización de pantalla se activa o desactiva.
Comentarios

Si va a ejecutar código de Visual Basic que haga cambios a los objetos que se muestren en la pantalla, el código puede ir más rápido si desactiva la actualización de pantalla hasta que el procedimiento ha finalizado la ejecución. También puede desactivar la actualización de pantalla si el código realiza cambios que el usuario no ha de ver o no necesita verlos.

El método Echo no impide que se muestren los cuadros de diálogo modales, como mensajes de error, o formularios emergentes, como las hojas de propiedades.

Si desactiva la actualización de pantalla, no se mostrará ningún cambio, incluso si el usuario presiona CTRL+Interr o Visual Basic encuentra un punto de interrupción, hasta que no la vuelva a activar. Podría crear una macro que activara la actualización de pantalla y asignarla a una tecla o comando de menú personalizado. Usando la combinación de teclas o el comando de menú se podría activar la actualización de pantalla si hubiera sido desactivada en Visual Basic.

Si desactiva la actualización de pantalla e intenta ejecutar paso a paso el código, no verá su avance a través del código, ni otra pista visual, hasta que no la vuelva a activar. Sin embargo, el código continuará ejecutándose.

Nota   No confunda el método Echo con el método Repaint. El método Echo activa y desactiva la actualización de la pantalla. El método Repaint fuerza una actualización inmediata de la pantalla.


Ejemplo del método Echo (Objeto Application)

Este ejemplo usa el método Echo para evitar que se actualice la pantalla mientras se están llevando a cabo ciertas operaciones. Mientras el procedimiento abre un formulario y lo minimiza, el usuario sólo ve un icono de un reloj de arena que indica que se está llevando a cabo el proceso y la pantalla no se actualiza. Cuando finaliza la tarea, el reloj de arena cambia a un puntero y se restaura la actualización de pantalla.

Sub DesactivarEco()

Application.Echo False

DoCmd.Hourglass True

DoCmd.OpenForm "Empleados", acNormal

DoCmd.Minimize

Application.Echo True

DoCmd.Hourglass False

End Sub


Métodos GetOption y SetOption

•	El método GetOption devuelve el valor actual de una opción del cuadro de diálogo Opciones (comando Opciones del menú Herramientas).

•	El método SetOption establece el valor de una opción del cuadro de diálogo Opciones.

Sintaxis

objeto.GetOption(nombreOpción)

objeto.SetOption nombreOpción, valor

Los métodos GetOption y SetOption tienen estos argumentos.

Argumento	Descripción
objeto	Opcional. El objeto Application.
nombreOpción	El nombre de la opción. Si desea ver una lista completa de los valores posibles del argumento nombreOpción, vea Establecer opciones desde Visual Basic.
Valor	Un valor Variant correspondiente al valor de la opción. El valor del argumento valor dependerá de los posibles valores de la opción.
Comentarios

Los métodos GetOption y SetOption proporcionan una forma de cambiar opciones del entorno desde el código de Visual Basic. Con estos métodos se puede establecer o leer cualquier opción disponible en el cuadro de diálogo Opciones, excepto las opciones de la ficha Módulos.

El valor disponible de la opción a asignar depende del tipo de opción. Hay tres tipos generales de opciones:

•	Opciones Sí/No que se establecen activando o desactivando una casilla de verificación.

•	Opciones que se establecen escribiendo una cadena o un valor numérico.

•	Opciones predefinidas que se eligen de un cuadro de lista, cuadro combinado o grupo de opciones.

En el caso de las opciones que el usuario establece mediante una casilla de verificación, el método GetOption devuelve True (-1) si el valor de la opción es Sí (la casilla de verificación está activada) o False (0) si es No (la casilla de verificación está desactivada). Para establecer una opción de este tipo mediante el método SetOption, especifique True o False en el argumento valor, como muestra este ejemplo:

Application.SetOption "Mostrar barra de estado", True

Para las opciones que el usuario establece escribiendo una cadena o valor numérico, el método GetOption devuelve el valor tal y como aparece en el cuadro de diálogo. Este ejemplo devuelve una cadena que contiene el valor del margen izquierdo.

Dim valorVarX As Variant

valorVarX = Application.GetOption("Margen izquierdo")

Par establecer este tipo de opción mediante el método SetOption, especifique la cadena o valor numérico que se escribiría en el cuadro de diálogo. Este ejemplo establece el modelo de formulario predeterminado a ModeloPedidos:

Application.SetOption "Modelo de formulario", "ModeloPedidos"

En el caso de las opciones cuyos valores aparecen en cuadros de lista o cuadros combinados, el método GetOption devuelve el número correspondiente a la posición del valor en la lista. La numeración empieza en 0, por lo que el método GetOption devuelve cero para el primer elemento, 1 para el segundo, etc. Por ejemplo, si la opción Tipo predeterminado de campo de la ficha Tablas/Consultas es AutoNumérico, el sexto elemento de la lista, el método GetOption devuelve 5.

Para establecer este tipo de opción, especifique la posición numérica de la opción dentro de la lista como el argumento valor para el método SetOption. Este ejemplo establece la opción Tipo predeterminado de campo a AutoNumérico:

Application.SetOption "Tipo predeterminado de campo", 5

Otras opciones se establecen haciendo clic sobre un botón de opción en un grupo de opciones del cuadro de diálogo Opciones. En Visual Basic, estas opciones también se establecen especificando la posición de la opción dentro del grupo de opciones. La primera opción del grupo es 0, la segunda 1, etc. Por ejemplo, si la opción Comportamiento de la selección de la ficha Formularios/Informes es Parcialmente encuadrados, el método GetOption devuelve 0, como en el ejemplo siguiente:

Debug.Print Application.GetOption("Comportamiento de la selección")

Para establecer una opción que es miembro de un grupo de opciones, especifique el número de índice de la opción dentro del grupo. Este ejemplo establece Comportamiento de la selección a Totalmente encuadrados.

Application.SetOption "Comportamiento de la selección", 1

Notas

•	Al usar el método GetOption o SetOption para establecer una opción del cuadro de diálogo Opciones, no es necesario especificar la ficha en la que se encuentra.

•	Con el método GetOption o SetOption no se puede leer ni establecer ninguna opción de la ficha Módulo del cuadro de diálogo Opciones.

•	Si se asigna el valor que devuelva el método GetOption a una variable, ésta debe ser declarada como Variant.

•	Si su base de datos puede ejecutarse en una versión de Microsoft Access para un lenguaje distinto al que usó para crearlo, deberá escribir en inglés los argumentos los métodos GetOption y SetOption.

Al salir de Microsoft Access, puede devolver las opciones a sus valores originales con el método SetOption. Podría usar variables públicas que almacenaran los valores originales. De este modo, se podría incluir código para restablecer las opciones en el procedimiento del evento Close de un formulario, o en un procedimiento de salida personalizado que el usuario hubiera de ejecutar para salir de la aplicación.


Ejemplo de los métodos GetOption y SetOption

Este ejemplo usa el método GetOption para averiguar, y guardar en una variable, el valor de la opción Tipo predeterminado de campo de la ficha Tablas/Consultas del cuadro de diálogo Opciones. Si la opción Tipo predeterminado de campo no está establecida a Texto, se muestra un cuadro de diálogo preguntando al usuario si se debe establecer a "Texto". Si el usuario elige Sí, el método SetOption cambia la opción.

Sub CambiarTipoDeCampo()

' La constante representa el valor Texto de la opción "Tipo predeterminado de campo".

Const conTexto = 0

Dim varTipo As Variant, entRespuesta As Integer

Dim cadMsj As String

' Determinar el valor actual.

varTipo = Application.GetOption("Tipo predeterminado de campo")

cadMsj = "¿Establecer el tipo predeterminado a 'Texto'?"

If varTipo <> conTexto Then

' Preguntar al usuario si el valor no es 'Texto'.

If MsgBox(cadMsj, vbYesNo) = vbYes Then

' Cambiar el valor a 'Texto'.

Application.SetOption "Tipo predeterminado de campo ", conTexto

End If

End If

End Sub


Método GoToPage (Objeto Formulario (Form))

El método GoToPage lleva el enfoque al primer control de la página especificada del formulario activo.

Sintaxis

formulario.GoToPage númeroPágina[, derecha, abajo]

El método GoToPage tiene estos argumentos.

Argumento	Descripción
formulario	Un objeto Formulario (Form) que representa el formulario activo.
NúmeroPágina	Una expresión numérica que es un número de página válido para el formulario activo.
derecha	Una expresión numérica que es un valor válido de desplazamiento horizontal (en twips) desde el margen izquierdo de la ventana a la parte de la página que se ha de mostrar.
abajo	Una expresión numérica que es un valor válido de desplazamiento vertical desde la parte superior de la ventana a la parte de la página que se ha de mostrar.
Comentarios

Cuando use este método para desplazarse a la página especificada de un formulario, el enfoque lo recibirá el primer control de la página, como se ha definido en el orden de tabulación del formulario. Para desplazarse a un control determinado del campo, use el método SetFocus.

Puede usar el método GoToPage si ha creado saltos de página en un formulario para agrupar información relacionada. Por ejemplo, podría haber un formulario Empleados con información personal en la primera página, información laboral en la segunda página e información de ventas en la tercera página. Con el método GoToPage podría desplazarse a la página deseada.

Puede usar los argumentos derecha y abajo para formularios con páginas más grandes que la ventana de Microsoft Access. Utilice el argumento númeroPágina para desplazarse a la página deseada y los argumentos derecha y abajo para mostrar la parte de la página que desea ver. Microsoft Access muestra la parte de la página que es el desplazamiento desde la esquina superior izquierda de la ventana indicado en los argumentos derecha y abajo.


Ejemplo del método GoToPage (Objeto Application)

Este ejemplo usa el método GoToPage para desplazar el enfoque de la segunda página del formulario Clientes a la posición especificada en los argumentos derecha y abajo.

Forms!Clientes.GoToPage 2, 1440, 600


Propiedad ItemData

La propiedad ItemData devuelve los datos de la columna dependiente para la fila especificada en un cuadro de lista o cuadro combinado.

Sintaxis

control.ItemData(índiceFila)

La propiedad ItemData tiene estos argumentos.

Argumento	Descripción
control	Un objeto Control que representa un cuadro combinado o de lista.
índiceFila	La fila del cuadro combinado o el cuadro de lista que contiene los datos que desea devolver, comenzando por la fila 0. Por ejemplo, para devolver el elemento de la sexta fila de un cuadro combinado, especifique 5 para el argumento índiceFila.
Comentarios

La propiedad ItemData permite recorrer la lista de entradas de un cuadro combinado o de lista. Por ejemplo, suponga que desea recorrer todos los elementos de un cuadro de lista para buscar una entrada determinada. Puede usar la propiedad ListCount para determinar el número de fila del cuadro de lista y usar la propiedad ItemData para devolver los datos de la columna dependiente de cada fila.

También puede usar la propiedad ItemData para devolver datos sólo de las filas seleccionadas de un cuadro de lista. Puede recorrer la colección ItemsSelected para determinar qué filas del cuadro de lista se han seleccionado y usar la propiedad ItemData para devolver los datos de esas filas. Para permitir que el usuario seleccione más de una fila a la vez, ha de establecer la propiedad SelecciónMúltiple(MultiSelect) del cuadro de lista a Simple o Extendida.

Sugerencia   Puede usar la propiedad Columna (Column) para devolver datos de una fila y columna concretas, incluso si la columna especificada no es la columna dependiente.


Ejemplo de la propiedad ItemData

Este ejemplo muestra el valor de la columna dependiente de cada fila seleccionada del cuadro de lista ListaEmpleados del formulario Empleados. La propiedad SelecciónMúltiple (MultiSelect) del cuadro de lista se debe establecer a Simple o Extendida.

Sub FilasSeleccionadas()

Dim ctlLista As Control, varElemento As Variant

' Devuelve una variable de objeto Control que representa al cuadro de lista.

Set ctlLista = Forms!Empleados!ListaEmpleados

' Recorrer los elemento seleccionados.

For Each varElemento in ctlLista.ItemsSelected

' Mostrar el valor de la columna dependiente.

Debug.Print ctlLista.ItemData(varElemento)

Next varElemento

End Sub


Método Quit (objeto Application)

El método Quit se utiliza para salir de Microsoft Access. Puede seleccionar una de las distintas opciones para guardar un objeto de base de datos antes de salir.

Sintaxis

Application.Quit [opción]

El método Quit tiene el siguiente argumento.

Argumento	Descripción
opción	Una constante intrínseca que especifica lo que sucede con los objetos que no se han guardado antes de salir de Microsoft Access. Este argumento puede ser una de las siguientes constantes:
	Constante	Descripción
	acSaveYes	(Predeterminado) Guarda todos los objetos sin mostrar un cuadro de diálogo.
	acPrompt	Muestra un cuadro de diálogo que le pregunta si desea guardar los objetos de la base de datos que ha modificado pero no ha guardado.
	acExit	Sale de Microsoft Access sin guardar ningún objeto.
Comentarios

El método Quit tiene el mismo efecto que el comando Salir del menú Archivo. Puede crear un comando de menú personalizado o un botón de comando en un formulario con un procedimiento que incluya el método Quit. Por ejemplo, puede incluir un botón "Salir" en un formulario e incluir un procedimiento en el evento Click que use el método Quit con el argumento opción establecido a acSaveYes.


Ejemplo del método Quit (Objeto Application)

Este es un ejemplo del procedimiento de evento Click de un botón de comando llamado "Salir". Después de hacer clic en el botón "Salir", un cuadro de diálogo pregunta al usuario si desea guardar los cambios y se sale de Microsoft Access.

Private Sub Salir_Click()

Application.Quit acPrompt

End Sub


Método Refresh (Microsoft Access)
Método Refresh

El método Refresh actualiza inmediatamente los registros del origen de los registros en el que se basa un determinado formulario u hoja de datos para reflejar los cambios efectuados a los datos por usted y otros usuarios en un entorno multiusuario.

Sintaxis

formulario.Refresh

El método Refresh tiene el siguiente argumento.

Argumento	Descripción
formulario	Un objeto Formulario (Form) que representa el formulario a actualizar.
Comentarios

Usar el método Refresh equivale a elegir Actualizar del menú Registros.

Microsoft Access actualiza automáticamente los registros, basándose en el valor de "Intervalo de actualización" de la ficha Avanzado del cuadro de diálogo Opciones (elija Opciones en el menú Herramientas). Los orígenes de datos ODBC se actualizan según el valor de "Intervalo de actualización ODBC" de la ficha Avanzado del cuadro de diálogo Opciones. Puede usar el método Refresh para ver los cambios que se han realizado al conjunto de registros actual de un formulario u hoja de datos desde que se actualizó por última vez el origen del registro en el que se base el formulario u hoja de datos.

El método Refresh sólo muestra los cambios efectuados a los registros del conjunto actual. Debido a que el método Refresh no vuelve a consultar la base de datos, el conjunto actual no incluye los registros que se han agregado o eliminado desde la última consulta a la base de datos. Ni tampoco excluye los registros que no cumplan los criterios de la consulta o filtro. Para realizar una nueva consulta de la base de datos, use el método Requery. Cuando se realiza una nueva consulta del origen de registros de un formulario, se reflejan correctamente todos los datos del origen de registros.

Notas

•	A veces es más rápido actualizar un formulario u hoja de datos que realizar una nueva consulta. Esto es especialmente cierto si la ejecución de la consulta inicial fue lenta.

•	No confunda el método Refresh con el método Repaint, que vuelve a pintar la pantalla con los cambios visuales pendientes.


Ejemplo del método Refresh

Este ejemplo usa el método Refresh para actualizar los registros del origen de registros base del formulario Clientes cada vez que recibe el enfoque:

Private Sub Form_Activate()

Me.Refresh

End Sub


Método Repaint

El método Repaint completa las actualizaciones de pantalla pendientes del formulario especificado. Esto incluye rehacer los cálculos pendientes de los controles del formulario.

Sintaxis

formulario.Repaint

El método Repaint tiene el siguiente argumento.

Argumento	Descripción
formulario	Un objeto Formulario (Form) que representa al formulario que se va a volver a pintar
Comentarios

Microsoft Access a veces no completa las actualizaciones de pantalla pendientes hasta que no finaliza otras tareas. Con el método Repaint, puede forzar la actualización inmediata de los controles del formulario especificado. Puede usar este método:

•	Cuando cambie los valores de una serie de campos. A menos que fuerce la actualización, Microsoft Access puede no mostrar los cambios inmediatamente, especialmente si otros campos (como los de una expresión de un control calculado) dependen de los valores de los campos modificados.

•	Cuando desee asegurarse de que un formulario muestra datos en todos sus campos. Por ejemplo, los campos que contienen objetos OLE  a menudo no muestran los datos inmediatamente después de abrir el formulario.

Este método no origina una nueva consulta de la base de datos, ni muestra los registros nuevos o modificados del origen de registros base del formulario. Puede usar el método Requery para realizar una nueva consulta del origen de datos del formulario o uno de sus controles.

Notas

•	No confunda el método Repaint con el método Refresh, o con el comando Actualizar del menú Registros. El método Refresh y el comando Actualizar muestran los cambios realizados al origen de registros base de cualquier registro que se muestre en formularios u hojas de datos. El método Repaint simplemente actualiza la pantalla cuando la actualización ha sido aplazada mientras Microsoft Access completa otras tareas.

•	El método Repaint difiere del método Echo en que el método Repaint obliga a volver a pintar inmediatamente la pantalla y el método Echo activa o desactiva el volver a pintar la pantalla.


Ejemplo del método Repaint

Este ejemplo usa el método Repaint para actualizar un formulario cuando recibe el enfoque:

Private Sub Form_Activate()

Me.Repaint

End Sub


Método Requery (Objeto Control o Formulario (Form))

El método Requery actualiza los datos base de un determinado formulario, o control que esté en el formulario activo, realizando una nueva consulta del origen de los datos del formulario o control.

Sintaxis

[objeto.]Requery

El método Requery tiene el siguiente argumento.

Argumento	Descripción
objeto	Un objeto Formulario (Form) o Control que representa el formulario o control que desea actualizar. Si se omite este argumento se realiza una nueva consulta del origen de los datos del objeto activo.
Comentarios

Puede usar este método para asegurarse de que el formulario o control muestran los datos más recientes.

El método Requery realiza una de estas acciones:

•	Vuelve a ejecutar la consulta en la que están basados el formulario o control.

•	Muestra los registros nuevos o modificados, o quita los registros eliminados de la tabla en la que están basados el formulario o control.

•	Actualiza los registros si se realizan cambios en la propiedad Filtro (Filter) del formulario.

Los controles basados en una consulta o tabla son:

•	Cuadros de lista y cuadros combinados.

•	Controles de subformulario.

•	Objetos OLE , tales como gráficos.

•	Controles cuya propiedad OrigenDelControl (ControlSource) incluye funciones agregadas de dominio o funciones agregadas de SQL.

Si especifica otro tipo de control en el argumento objeto, se realiza una nueva consulta del origen de los datos del formulario.

Si el control especificado por el argumento objeto no es dependiente de un campo de una tabla o consulta, el método Requery fuerza volver a calcular el control.

Si omite el argumento objeto, el método Requery realiza una nueva consulta del origen de los datos base del formulario o control que tiene el enfoque. Si el control que tiene el enfoque tiene un origen del registro u origen de la fila, se realizará una nueva consulta; de lo contrario, simplemente se actualizarán los datos del control.

Si un control de subformulario tiene el enfoque, este método sólo realiza una nueva consulta del origen de los datos del subformulario, no del formulario principal.

Notas

•	El método Requery actualiza los datos base de un formulario o control para reflejar los registros que se han agregado o eliminado del origen de los datos. El método Refresh sólo muestra los cambios que se han realizado al conjunto de registros actual; no muestra los registros nuevos o eliminados del origen de los datos. El método Repaint simplemente vuelve a pintar el formulario especificado y sus controles.

•	El método Requery no cede el control al sistema operativo para permitir que Windows continúe procesando mensajes. Use la función DoEvents si necesita ceder temporalmente el control al sistema operativo.

•	El método Requery es más rápido que la acción NuevaConsulta. Al usar la acción NuevaConsulta (Requery), Microsoft Access cierra la consulta y la vuelve a cargar de la base de datos. Al usar el método Requery, Microsoft Access la vuelve a ejecutar sin cerrarla ni volver a cargarla.


Ejemplo del método Requery (Objeto Control o Formulario (Form))

El siguiente ejemplo usa el método Requery para volver a consultar los datos del cuadro de lista ListaEmpleados en el formulario Empleados:

Sub NuevaConsultaDeLista()

Dim ctlLista As Control

' Devuelve un objeto Control que representa al cuadro de lista.

Set ctlLista = Forms!Empleados!ListaEmpleados

' Vuelve a consultar el origen los datos del cuadro de lista.

ctlLista.Requery

End Sub


Método SetFocus (Microsoft Access)
Método SetFocus

El método SetFocus lleva el enfoque al formulario especificado, al control especificado del formulario activo o al campo especificado de la hoja de datos activa.

Sintaxis

objeto.SetFocus

El método SetFocus tiene el siguiente argumento.

Argumento	Descripción
objeto	Un objeto Formulario (Form) que representa a un formulario, o un objeto Control que representa al control del formulario u hoja de datos activa.
Comentarios

Puede usar el método SetFocus cuando desee que un campo o control determinado tenga el enfoque para que la entrada del usuario se dirija a este objeto.

Para leer algunas de las propiedades de un control, necesita asegurarse de que el control tiene el enfoque. Por ejemplo, para leer la propiedad Texto (Text) de un cuadro de texto, éste ha de tener el enfoque.

Otras propiedades sólo se pueden establecer cuando el control no tiene el enfoque. Por ejemplo, no es posible establecer a False (0) las propiedades Visible o Activado (Enabled) de un control cuando éste tenga el enfoque.

También puede usar el método SetFocus para desplazarse por un formulario según unas condiciones determinadas. Por ejemplo, si el usuario selecciona No aplicable para el primer conjunto de preguntas en un formulario que es un cuestionario, el código de Visual Basic podría saltar automáticamente ese conjunto y desplazar el enfoque al primer control del siguiente conjunto de preguntas.

Puede desplazar el enfoque sólo a un control o formulario visibles. Un formulario y los controles de un formulario no están visibles hasta que el evento Load del formulario ha finalizado. Por lo tanto, si usa el método SetFocus en el evento Load de un formulario para desplazar el enfoque a ese formulario, ha de usar el método Repaint antes del método SetFocus.

No puede desplazar el enfoque a un control si su propiedad Activado (Enabled) es False. Debe establecer la propiedad Activado (Enabled) del control a True (-1) antes de desplazar el enfoque a ese control. Sin embargo, sí puede desplazar el enfoque a un control cuya propiedad Bloqueado (Locked) sea True.

Si un formulario contiene controles cuya propiedad Activado (Enabled) sea True, no puede desplazar el enfoque al formulario. Sólo es posible desplazar el enfoque a los controles del formulario. En este caso, si intenta usar SetFocus para desplazar el enfoque al formulario, el enfoque lo recibe el control del formulario que lo recibió por última vez.

Sugerencia   Puede usar el método SetFocus para desplazar el enfoque a un subformulario, que es un tipo de control. También puede desplazar el enfoque a un control de un subformulario usando dos veces el método SetFocus, primero para desplazar el enfoque al subformulario y después al control del subformulario.


Ejemplo del método SetFocus

Este ejemplo usa el método SetFocus para desplazar el enfoque al cuadro de texto IdDeEmpleado del formulario Empleados:

Forms!Empleados!IdDeEmpleado.SetFocus


Método Circle

El método Circle dibuja un círculo, una elipse o un arco en un objeto Informe (Report) cuando se produce el evento Print.

Sintaxis

objeto.Circle [Step](x, y), radio[, [color][, [comienzo][, [fin][, aspecto]]]]

Sólo puede usar este método en un procedimiento de evento o una macro especificada por las propiedades de evento en una sección de informe, o la propiedad de evento AlPaginar (OnPage) en un informe.

El método Circle tiene estos argumentos.

Argumento	Descripción
objeto	El objeto Informe (Report) donde se dibuja el círculo.
Step	Una palabra clave que indica que el centro del círculo, elipse o arco está expresado en relación a las coordenadas actuales indicadas por los valores actuales de las propiedades PosiciónX y PosiciónY (CurrentX, CurrentY) del argumento objeto.
x, y	Valores de tipo Single que indican las coordenadas del centro del círculo, elipse o arco. El objeto de las Propiedades de escala (ModoDeLaEscala (ScaleMode), IzquierdaDelaEscala (ScaleLeft), SuperiorDeLaEscala (ScaleTop), AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth)) especificado por el argumento objeto determinan la unidad de medida utilizada.
radio	Valor de tipo Single que indica el radio del círculo, elipse o arco. Las Propiedades de escala (ScaleMode, ScaleLeft, ScaleTop, ScaleHeight y ScaleWidth) del objeto Informe (Report) especificadas por el argumento objeto determinan las unidades de medida utilizadas. De forma predeterminada, las distancias se miden en twips.
color	Valor de tipo Long que indica el color RGB del contorno del círculo. Si se omite este argumento, se usará el valor de la propiedad ColorDelTexto (ForeColor). Puede usar la función RGB o la función QBColor para especificar el color.
comienzo, fin	Valores de tipo Single. Cuando se dibuja un círculo o una elipse parcial, los argumentos comienzo y fin especifican (en radianes) las posiciones inicial y final del arco. El valor predeterminado del argumento comienzo es 0 radianes; el valor predeterminado del argumento fin es 2 * Pi radianes. El intervalo de ambos es desde 2 Pi radianes a 2 Pi radianes.
apariencia	Un valor de tipo Single que indica la relación entre las dimensiones del círculo. El valor predeterminado es 1.0, que produce un círculo perfecto (no ovalado) en cualquier pantalla.
Comentarios

Si al dibujar un círculo o elipse parcial el argumento comienzo es negativo, Circle dibuja un radio hasta la posición especificada por el argumento comienzo y considera el ángulo como positivo. Si el argumento fin es negativo, Circle dibuja un radio hasta la posición especificada por el argumento fin y considera el ángulo como positivo. El método Circle siempre dibuja en el sentido contrario de las manecillas del reloj (dirección positiva).

Si desea rellenar un círculo, establezca las propiedades ColorDeRelleno (FillColor) y EstiloDeRelleno (FillStyle) en el informe. Sólo las figuras cerradas se pueden rellenar. Las figuras cerradas incluyen los círculos, elipses y sectores (arcos con líneas de radio dibujadas en ambos extremos).

Si al dibujar sectores necesita dibujar un radio hasta el ángulo 0 (para formar un segmento de línea horizontal a la derecha), especifique un valor negativo muy pequeño para el argumento comienzo en lugar de especificar 0. Por ejemplo, podría especificar .00000001 para el argumento comienzo.

Puede omitir un argumento en medio de la sintaxis, pero tiene que incluir la coma del argumento antes de incluir el siguiente argumento. Si omite un argumento a la izquierda, no use ninguna coma después del último argumento que especifique.

El ancho de la línea utilizada para dibujar el círculo, elipse o arco depende del valor de la propiedad AnchoDeDibujo (DrawWidth). La manera en que un círculo se dibuja en el fondo depende de las configuraciones de las propiedades ModoDeDibujo (DrawMode) y EstiloDeDibujo (DrawStyle).

Al aplicar el método Circle, las propiedades CurrentX y CurrentY se establecen como el centro especificado por los argumentos x e y.


Ejemplo del método Circle

Este ejemplo usa el método Circle para dibujar un círculo y crear un sector circular de color rojo dentro del círculo.

Para probar este ejemplo en Microsoft Access, cree un nuevo informe. Establezca la propiedad AlImprimir (OnPrint) de la sección Detalles a [Procedimiento de evento]. Introduzca este código en el módulo del informe y cambie a Vista preliminar.

Private Sub Detalle1_Print(Cancel As Integer, PrintCount As Integer)

Const conPI = 3.14159265359

Dim sngHCtr As Single, sngVCtr As Single

Dim sngRadio As Single

Dim sngComienzo As Single, sngFin As Single

sngHCtr = Me.ScaleWidth / 2	' Centrado horizontal.

sngVCtr = Me.ScaleHeight / 2	' Centrado vertical.

sngRadio = Me.ScaleHeight / 3	' Radio del círculo.

' Dibujar círculo

Me.Circle(sngHCtr, sngVCtr), sngRadio	' Dibujar círculo.

sngComienzo = -0.00000001	' Comienzo del sector circular.

sngFin = -2 * conPI / 3	' Fin del sector circular.

Me.FillColor = RGB(255,0,0)	' Color rojo para el sector circular.

Me.FillStyle = 0	' Rellenar el sector circular.

' Dibujar el sector circular dentro del círculo.

Me.Circle(sngHCtr, sngVCtr), sngRadio, , sngComienzo, sngFin

End Sub


Método Line

El método Line dibuja líneas y rectángulos en un objeto Informe (Report) cuando se produce el evento Print.

Sintaxis

objeto.Line [[Step](x1, y1)]  [Step](x2, y2)[, [color][, B[F]]]

Sólo puede usar este método en un procedimiento de evento o una macro especificada por las propiedades de evento AlImprimir (OnPrint) o AlDarFormato (OnFormat) en una sección de informe, o en la propiedad de evento AlPaginar (OnPage) en un informe.

El método Line tiene estos argumentos.

Argumento	Descripción
objeto	El objeto Informe (Report) en el que se dibujará la línea o rectángulo.
Step	Una palabra clave que especifica que las coordenadas del punto inicial son relativas a las coordenadas actuales indicadas por los valores de las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY) del argumento objeto.
x1, y1	Valores de tipo Single que indican las coordenadas del punto inicial de la línea o rectángulo. Las propiedades de escala (ModoDeLaEscala (ScaleMode), IzquierdaDeLaEscala (ScaleLeft), SuperiorDeLaEscala (ScaleTop), AltoDeLaEscala (ScaleHeight), y AnchoDeLaescala (ScaleWidth)) del objeto Informe (Report) especificadas por el argumento objeto determinan la unidad de medida utilizada. Si se omite este argumento, la línea comenzará en la posición indicada por CurrentX y CurrentY.
Step	Palabra clave que especifica que las coordenadas del punto final son relativas al punto inicial de la línea.
x2, y2	Valores de tipo Single que indican las coordenadas del punto final de la línea. Estos argumentos son obligatorios.
Color	Valor de tipo Long que indica el color RGB utilizado para dibujar la línea. Si se omite este argumento, se utilizará el valor de la propiedad ColorDelTexto (ForeColor). Puede usar la función RGB o la función QBColor para especificar el color.
B	Opción que hace que se dibuje un rectángulo usando las coordenadas que especifican las esquinas opuestas del rectángulo.
F	F no se puede usar sin B. Si se usa la opción B, la opción F especifica que el rectángulo se ha de rellenar con el mismo color que se utilizó para dibujar el rectángulo. Si se usa la opción B sin F, el cuadro se rellena con el color especificado por las configuraciones actuales de las propiedades ColorDeRelleno (FillColor) y EstiloDelFondo (BackStyle). El valor predeterminado de EstiloDelFondo (BackStyle) es Normal para los rectángulos y las líneas.
Comentarios

Al dibujar líneas que están conectadas, asegúrese de que cada línea no inicial comience en el punto final de la línea anterior.

El ancho de la línea dibujada depende de la configuración de la propiedad AnchoDeDibujo (DrawWidth). La manera como se dibuja una línea o cuadro en el fondo depende de la configuración de las propiedades ModoDeDibujo (DrawMode) y EstiloDeDibujo (DrawStyle).

Al aplicar el método Line, las propiedades CurrentX y CurrentY se establecen como el punto final especificado por los argumentos x2 e y2.


Ejemplo del método Line

Este ejemplo usa el método Line para dibujar un rectángulo rojo ubicado a cinco píxeles desde el borde de un informe llamado InformeEmpleados. La función RGB se usa para dibujar la línea en rojo.

Para probar este ejemplo en Microsoft Access, cree un nuevo informe.Pegue este código en el módulo del informe y cambie a Vista preliminar.

Private Sub Imprimir_Detalle(Cancel As Integer, PrintCount As Integer)

' Llamar al procedimiento DibujarLínea

DibujarLínea

End Sub

Sub DibujarLínea()

Dim rpt As Report, lngColor As Long

Dim sngArriba As Single, sngIzquierda As Single

Dim sngAncho As Single, sngAlto As Single

Set rpt = Reports!InformeEmpleados

' Establecer escala a píxeles.

rpt.ScaleMode = 3

' Borde interior superior.

sngArriba = rpt.ScaleTop + 5

' Borde interior izquierdo.

sngIzquierda = rpt.ScaleLeft + 5

' Ancho del borde interior.

sngAncho = rpt.ScaleWidth - 10

' Alto del borde interior.

sngAlto = rpt.ScaleHeight - 10

' Color rojo.

entColor = RGB(255,0,0)

' Dibujar la línea como un cuadro.

rpt.Line(sngArriba, sngIzquierda) - (sngAncho, sngAlto), entColor, B

End Sub


Método PSet

El método PSet establece un punto de un objeto Informe (Report) a un color especificado cuando se produce el evento Print.

Sintaxis

objeto.PSet [Step](x, y)[, color]

Sólo puede usar este método en un procedimiento de evento o una macro especificada por las propiedades de evento AlImprimir (OnPrint) o AlDarFormato (OnFormat) en una sección de informe, o en la propiedad de evento AlPaginar (OnPage) en un informe.

El método PSet tiene estos argumentos.

Argumento	Descripción
objeto	El objeto Informe (Report) en el que se dibujará el punto.
Step	Una palabra clave que especifica que las coordenadas son relativas a las coordenadas actuales indicadas por los valores actuales de las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY) del argumento objeto.
x, y	Valores de tipo Single que indican las coordenadas horizontal y vertical del punto.
Color	Un valor de tipo Long que indica el color RGB para el punto. Si se omite este argumento, se utilizará el valor de la propiedad ColorDelTexto (ForeColor). También puede usar la función RGB o la función QBColor para especificar el color.
Comentarios

El tamaño del punto depende de la configuración de la propiedad AnchoDeDibujo (DrawWidth). Cuando DrawWidth es 1, PSet establece un solo píxel con el color especificado. Cuando DrawWidth es mayor que 1, el punto se centra en las coordenadas especificadas.

La manera en que se dibuja el punto depende de las configuraciones de las propiedades ModoDeDibujo (DrawMode) y EstiloDeDibujo (DrawStyle).

Al aplicar el método PSet, las propiedades CurrentX y CurrentY se establecen al punto especificado por los argumentos x e y.

Si desea borrar un solo pixel con el método PSet, especifique las coordenadas del pixel y use &HFFFFFF (blanco) como el argumento color.

Sugerencia   Para dibujar una línea, es más rápido usar el método Line que el método Pset.


Ejemplo del método PSet

Este ejemplo usa el método PSet para dibujar una línea a lo largo del eje horizontal de un informe.

Para probar este ejemplo en Microsoft Access, cree un nuevo informe. Establezca la propiedad AlImprimir (OnPrint) de la sección Detalles a [Procedimiento de evento]. Introduzca este código en el módulo del informe y cambie a Vista preliminar.

Sub Detalle_Print(Cancel As Integer, PrintCount As Integer)

Dim sngPtoCen As Single, entI As Integer

' Establecer escala a píxeles.

Me.ScaleMode = 3

' Calcular punto central.

sngMidPt = Me.ScaleHeight / 2

' Bucle para dibujar la línea píxel a píxel en el eje horizontal.

For entI = 1 To rpt.ScaleWidth

rpt.PSet(entI, sngPtoCen)

Next entI

End Sub


Método Scale

El método Scale define el sistema de coordenadas para un objeto Informe (Report).

Sintaxis

objeto.Scale[(x1, y1)  (x2, y2)]

Sólo puede usar este método en un procedimiento de evento o una macro especificada por las propiedades de evento AlImprimir (OnPrint) o AlDarFormato (OnFormat) en una sección de informe, o en la propiedad de evento AlPaginar (OnPage) en un informe.

El método Scale tiene estos argumentos.

Argumento	Descripción
objeto	Objeto Informe (Report) al que se aplicará el sistema de coordenadas.
x1, y1	Valores Single para las coordenadas horizontales y verticales que definen la posición de la esquina superior izquierda del objeto.
x2, y2	Valores Single para las coordenadas horizontales y verticales que definen la posición de la esquina inferior derecha del objeto.
Comentarios

El método Scale se puede usar para restablecer el sistema de coordenadas a cualquier escala deseada. El uso de Scale sin argumento restablece el sistema de coordenadas a twips. Scale afecta al sistema de coordenadas para el método Print y los métodos de gráficos de informes (métodos Circle, Line y PSet).


Ejemplo del método Scale

El siguiente ejemplo dibuja un círculo con una escala, y a continuación usa el método Scale para cambiar la escala y dibujar otro círculo con la nueva escala.

Private Sub Imprimir_Detalle(Cancel As Integer, PrintCount As Integer)

DibujarCírculo

End Sub

Sub DibujarCírculo()

Dim sngHCtr As Single, sngVCtr As Single

Dim sngNuevoH As Single, sngNuevoV As Single

Dim sngRadio As Single

Me.ScaleMode = 3	 ' Establecer escala a píxeles.

sngHCtr = Me.ScaleWidth / 2	 ' Centrado horizontal.

sngVCtr = Me.ScaleHeight / 2	 ' Centrado vertical.

sngRadio = Me.ScaleHeight / 3	 ' Radio del círculo.

' Dibujar círculo.

Me.Circle (sngHCtr, sngVCtr), sngRadio

' Nueva escala horizontal.

sngNuevoH = Me.ScaleWidth * 0.9

' Nueva escala vertical.

sngNuevoV = Me.ScaleHeight * 0.9

' Cambiar a la nueva escala.

Me.Scale(0, 0)-(sngNuevoH, sngNuevoV)

' Dibujar círculo.

Me.Circle (sngHCtr + 100, sngVCtr), sngRadio, RGB(0, 256, 0)

End Sub


Método TextHeight

El método TextHeight devuelve el alto de una cadena de texto tal como se imprimiría en la fuente activa del objeto Informe (Report).

Sintaxis

objeto.TextHeight(expresiónCadena)

El método TextHeight tiene estos argumentos.

Argumento	Descripción
objeto	Objeto Informe (Report) que determina la fuente y el tamaño del punto.
expresiónCadena	La cadena de texto cuyo alto se determinará.
Comentarios

Puede usar el método TextHeight para determinar el espacio vertical que necesitará una cadena de texto en la fuente actual cuando se dé formato y se imprima el informe. Por ejemplo, una cadena de texto a la que se da formato en una fuente Arial de 9 puntos requiere un espacio distinto a otra en Courier de 12 puntos. Para determinar la fuente y el tamaño del texto en un informe, compruebe los valores de las propiedades NombreDeFuente (FontName) y TamañoDeFuente (FontSize) del informe.

El valor devuelto por el método TextHeight se expresa en términos del sistema de coordenadas activo para el informe, definido por el método Scale. Puede usar la propiedad ModoDeLaEscala (ScaleMode) para determinar el sistema de coordenadas actual.

Si el argumento expresiónCadena contiene retornos de carro, el método TextHeight devuelve el alto total de las líneas, incluyendo el espacio por encima y por debajo de cada línea. Puede usar el valor devuelto por el método TextHeight para calcular el espacio que se necesita para situar varias líneas de texto en un informe.


Ejemplo de los métodos TextHeight y TextWidth

Este ejemplo utiliza los métodos TextHeight y TextWidth para determinar el espacio vertical y horizontal necesario para imprimir una cadena de texto en la fuente activa del informe.

Para probar este ejemplo en Microsoft Access, cree un nuevo informe. Establezca la propiedad AlImprimir (OnPrint) de la sección Detalles a [Procedimiento de evento]. Introduzca este código en el módulo del informe y cambie a Vista preliminar.

Private Sub Detalle_Print(Cancel As Integer, PrintCount As Integer)

' Establecer la unidad de medida a twips (escala predeterminada).

Me.Scalemode = 1

' Mostrar el nombre y el tamaño de la fuente del informe.

Debug.Print "Fuente del informe: "; Me.FontName

Debug.Print "Tamaño de la fuente del informe: "; Me.FontSize

' Mostrar el alto y ancho necesarios para la cadena de texto.

Debug.Print "Alto del texto (Twips): "; Me.TextHeight("Informe de productos")

Debug.Print "Ancho del texto (Twips): "; Me.TextWidth("Informe de productos ")

End Sub


Método TextWidth

El método TextWidth devuelve el ancho de una cadena de texto tal como se imprimiría en la fuente activa de un objeto Informe (Report).

Sintaxis

objeto.TextWidth(expresiónCadena)

El método TextWidth tiene estos argumentos.

Argumento	Descripción
objeto	Objeto Informe (Report) que determina la fuente y el tamaño del punto.
expresiónCadena	La cadena de texto cuyo ancho se determinará.
Comentarios

Puede usar el método TextWidth para determinar el espacio horizontal que necesitará una cadena de texto en la fuente actual cuando se dé formato y se imprima el informe. Por ejemplo, una cadena de texto a la que se da formato en una fuente Arial de 9 puntos requiere un espacio distinto a otra en Courier de 12 puntos. Para determinar la fuente y el tamaño del texto en un informe, compruebe los valores de las propiedades NombreDeFuente (FontName) y TamañoDeFuente (FontSize) del informe.

El valor devuelto por el método TextWidth se expresa en términos del sistema de coordenadas activo para el informe, definido por el método Scale. Puede usar la propiedad ModoDeLaEscala (ScaleMode) para determinar el sistema de coordenadas actual.

Si el argumento expresiónCadena contiene retornos de carro, el método TextWidth devuelve el ancho de la línea más larga, desde el principio de la línea hasta el retorno de carro. Puede usar el valor devuelto por el método TextWidth para calcular el espacio que se necesita para situar varias líneas de texto en un informe.


Método Recalc

El método Recalc actualiza inmediatamente todos los controles calculados de un formulario.

Sintaxis

formulario.Recalc

El método Recalc tiene el siguiente argumento.

Argumento	Descripción
formulario	Un objeto Formulario (Form) que representa al formulario que contiene los controles cuyos valores se desea volver a calcular.
Comentarios

Usar este método tiene el mismo efecto que presionar la tecla F9 cuando un formulario tiene el enfoque. Puede usar este método para actualizar los valores de los controles que dependen de otros campos cuyo contenido puede haber variado.


Ejemplo del método Recalc

Este ejemplo usa el método Recalc para actualizar los controles del formulario Pedidos. Este formulario incluye el cuadro de texto Embarque, que muestra el coste del embarque, y un control calculado que muestra el coste total de un pedido incluyendo el embarque. Si la instrucción del método Recalc se sitúa en el procedimiento de evento AfterUpdate del cuadro de texto, cada vez que se introduzca un nuevo importe para el embarque se actualizará el coste total del pedido.

Sub Embarque_AfterUpdate()

Me.Recalc

End Sub


Método Print (Microsoft Access)
Método Print

El método Print imprime texto en el objeto Informe (Report) utilizando el color y la fuente actual.

Sintaxis

objeto.Print [{Spc(n) | Tab(n)}][lista_de_expresiones][{;|,}]

El método Print tiene los siguientes argumentos.

Argumento	Descripción
objeto	El objeto Informe (Report) en el que va a imprimirse el texto.
Spc(n)	La función de Visual Basic utilizada para insertar n espacios en la salida de la impresora. Se permite uso múltiple de este argumento.
Tab(n)	La función de Visual Basic utilizada para mover el punto de inserción a la zona de impresión enésima antes de ser impreso el argumento lista_de_expresiones. Las zonas de impresión comienzan en la columna 14. El ancho de cada columna es un promedio del ancho de todos los caracteres dependiendo del tamaño de la fuente para la fuente elegida. Están permitidos múltiples usos.
Lista_de_expresiones	Las expresiones numérica o de cadena a imprimir. Si se omite este argumento, el método Print imprime una línea en blanco. Se pueden utilizar varias expresiones utilizando como separadores, un espacio, un punto y coma (;), o una coma. Un espacio tiene el mismo efecto que un punto y coma. También puede utilizar las funciones Spc y Tab para separar cada par de expresiones.
{;|,}	Determina la ubicación del punto de inserción para el próximo carácter impreso. Un punto y coma significa que el punto de inserción está ubicado inmediatamente después del último carácter impreso; una coma significa que el punto de inserción está ubicado al inicio de la siguiente zona de impresión.
Comentarios

Puede utilizar este método sólo en un procedimiento de evento o macro especificada estableciendo la propiedad de evento AlImprimir (OnPrint) de la sección.

Las expresiones especificadas en el argumento lista_de_expresiones son impresas en el objeto al comienzo de la posición indicada y establecida en las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY).

Cuando se imprime el argumento lista_de_expresiones, normalmente se agrega para que el siguiente método Print comience la impresión en la siguiente línea. Cuando se produce un retorno de carro, el valor de la propiedad CurrentY se incrementa en el argumento lista_de_expresiones (igual que el valor devuelto por el método TextHeight) y la propiedad CurrentX se establece a 0.

Cuando un punto y coma sigue al argumento lista_de_expresiones, no se agrega un retorno de carro, y el siguiente método Print imprime en la misma línea en la que imprimió el anterior método Print. Las propiedades CurrentX y CurrentY toman los valores del punto que sigue inmediatamente al último carácter impreso. Si el argumento lista_de_expresiones contiene un retorno de carro, este retorno de carro establece las propiedades CurrentX y CurrentY, en la forma descrita para el método Print sin un punto y coma.

Cuando una coma sigue al argumento lista_de_expresiones, las propiedades CurrentX y CurrentY toman los valores de la siguiente zona de impresión en la misma línea.

Cuando el argumento lista_de_expresiones se imprime en un objeto Informe (Report), las líneas que no quepan en la posición especificada no se desplazan. El texto se corta para ajustarse al objeto.

Debido a que el método Print normalmente imprime con caracteres de espacio proporcionados, es importante recordar que no hay correlación entre el número de caracteres impresos y el número de columnas de ancho fijo que ocupan esos caracteres. Por ejemplo, una letra grande (como la W) ocupa más que una columna de ancho fijo, así como una letra fina (como la I) ocupa menos. Debe asegurarse de que las columnas tabulares estén posicionadas lo suficientemente separadas para acomodar el texto a imprimir. De forma alternativa, puede imprimir con una fuente de tamaño fijo (como Courier) para asegurarse de que cada carácter sólo ocupa una columna.


Ejemplo del método Print

El siguiente ejemplo utiliza el método Print para mostrar texto en un informe llamado Informe1. Utiliza los métodos TextWidth y TextHeight para centrar el texto verticalmente y horizontalmente.

Private Sub Formato_Detalle(Cancelar As Integer, CuentaFormato As Integer)

Dim inf as Report

Dim cadMensaje As String

Dim numTamHor As Integer, numTamVer As Integer

Set inf = Me

cadMensaje = "MostrarMensaje"

With inf

'Establece la escala de los píxeles, y establece las propiedades FontName y FontSize.

.ScaleMode = 3

.FontName = "Courier"

.FontSize = 24

End With

' Ancho horizontal.

numTamHor = Inf.AnchoTexto(cadMensaje)

' Alto vertical.

numTamVer = Inf.AltoTexto(cadMensaje)

' Calcula la ubicación donde se va a mostrar el texto.

Inf.CurrentX = (Inf.ScaleWidth/2) - (numTamHor/2)

Inf.CurrentY = (Inf.ScaleHeight/2) - (numTamVer/2)

' Imprime el texto en el objeto Informe.

Inf.Print cadMensaje

End Sub


Método BuildCriteria

El método BuildCriteria devuelve una cadena de criterios de sintaxis analizados como aparecería en la cuadrícula de diseño de la consulta o Filtro por formulario. Por ejemplo, puede que desee establecer la propiedad Filtro (Filter) de un formulario basándose en criterios variables del usuario. Puede utilizar el método BuildCriteria para construir el argumento de expresión de la cadena para la propiedad Filtro (Filter).

Sintaxis

application.BuildCriteria(campo, tipocampo, expresión)

El método BuildCriteria tiene los siguientes argumentos.

Argumento	Descripción
application	(Opcional) El objeto Application.
campo	Una expresión de cadena que identifica el campo para el que desea definir los criterios.
tipocampo	Una constante intrínseca que indica el tipo de datos del campo. Para obtener una lista de los tipos de datos, posibles de campos, consulte la propiedad de acceso a datos (DAO) Type.
expresión	Una cadena de expresión que identifica los criterios que deben ser analizados.
El método BuildCriteria devuelve una cadena de caracteres.

Comentarios

El método BuildCriteria permite construir fácilmente criterios para un filtro que se base en las entradas del usuario. Analiza el argumento expresión de la misma forma que si la expresión hubiera sido analizada si hubiera sido introducida en el modo Cuadrícula de diseño de la consulta o Filtro por formulario.

Por ejemplo, un usuario que crea una consulta en una tabla Pedidos puede restringir la hoja de respuestas dinámica a los pedidos que se hayan hecho después del 1 de Enero, 1995, estableciendo los criterios en un campo FechaPedido. El usuario podría introducir una expresión como, por ejemplo, la siguiente en la celda “Criterios” bajo el campo FechaPedido:

>1-1-95

Microsoft Access analiza automáticamente esta expresión y devuelve la siguiente expresión:

>#1/1/95#

El método BuildCriteria ofrece el mismo análisis desde el código Visual Basic. Por ejemplo, para devolver la cadena anterior correctamente analizada, se pueden suministrar los siguientes argumentos al método BuildCriteria:

Dim cadCriterios As String

cadCriterios = BuildCriteria("FechaPedido", dbDate, ">1-1-95")

Dado que es necesario suministrar criterios para la propiedad Filtro (Filter) en un formulario con la sintaxis analizada correctamente, puede utilizar el método BuildCriteria para construir una cadena analizada correctamente:

Se puede utilizar el método BuildCriteria para construir una cadena con criterios múltiples si esos criterios se refieren al mismo campo. Por ejemplo, puede utilizar el método BuildCriteria con los siguientes argumentos para construir una cadena con criterios múltiples que estén relacionados con el campo FechaPedido:

cadCriterios = BuildCriteria("FechaPedido", dbDate, ">1-1-95 and <5-1-95")

Este ejemplo devuelve la siguiente cadena de criterios:

FechaPedido>#1/1/95# y FechaPedido<#5/1/95#

Sin embargo, si desea construir una cadena de criterios que haga referencia a campos múltiples, debe crear las cadenas y concatenarlas. Por ejemplo, si desea construir un criterio para un filtro para mostrar los registros de los pedidos hechos después del 1-1-95 y para los que el importe sea menor de $50, deberá utilizar el método BuildCriteria dos veces y concatenar las cadenas resultantes:


Ejemplo del método BuildCriteria

El siguiente ejemplo indica al usuario que introduzca las primeras letras del nombre de un producto y luego usa el método BuildCriteria para construir una cadena de criterios basada en la entrada del usuario. A continuación, el procedimiento suministra esta cadena como argumento de la propiedad Filtro (Filter) de un formulario Productos. Finalmente, se establece la propiedad ActivarFiltro (FilterOn) para que aplique el filtro.

Sub EstablecerFiltro ()

Dim frm As Formulario, cadMsg As String

Dim cadInput As String, cadFiltro As String

' Abrir el formulario Productos en la vista Formulario.

DoCmd.AbrirFormulario "Productos"

' Devolver variable de objeto Formulario que apunta a formulario Productos.

Set frm = Forms!Productos

cadMsg = "Introduzca una o más letras del nombre del producto " _

& "seguidas por un asterisco."

' Indique al usuario que introduzca las letras.

cadInput = InputBox(cadMsg)

' Construir la cadena de criterios.

cadFiltro = BuildCriteria("NombreProducto", dbTexto, cadInput)

' Establecer propiedad Filtro para aplicar Filtro.

frm.Filtro = cadFiltro

' Establecer la propiedad ActivarFiltro; el formulario muestra ahora los registros filtrados.

frm.ActivarFiltro = True

End Sub


Método CloseCurrentDatabase

Se puede utilizar el método CloseCurrentDatabase para cerrar la base de datos activa desde otra aplicación que haya abierto un base de datos mediante automatización. Por ejemplo, podría utilizar este método desde Microsoft Excel para cerrar la base de datos actualmente abierta en la ventana Microsoft Access antes de abrir otra base de datos.

Sintaxis

aplicación.CloseCurrentDatabase

El método CloseCurrentDatabase tiene el siguiente argumento.

Argumento	Descripción
aplicación	El objeto Application.
Comentarios

El método CloseCurrentDatabase es útil cuando se ha abierto una base de datos Microsoft Access desde otra aplicación mediante automatización. Una vez que haya creado una instancia de Microsoft Access desde otra aplicación, debe también crear una nueva base de datos o especificar una base de datos existente para que sea abierta. Esta base de datos se abrirá en la ventana Microsoft Access.

Si utiliza el método CloseCurrentDatabase para cerrar la base de datos que está abierta en la instancia actual de Microsoft Access, puede abrir una base de datos diferente sin tener que crear otra instancia de Microsoft Access.

Nota   No confunda el método CloseCurrentDatabase con el método DAO Close de acceso a datos. El método DAO Close cierra una variable de objeto Database, haciendo que la variable se salga de alcance, aunque en realidad no cierra la base de datos que esté abierta en la ventana Microsoft Access. El método CloseCurrentDatabase cierra la base de datos que está abierta en la ventana Microsoft Access.


Ejemplo del método CloseCurrentDatabase

El siguiente ejemplo abre una base de datos de Microsoft Access desde otra aplicación mediante automatización, crea un nuevo formulario y lo guarda y luego cierra la base de datos.

Se puede introducir este código en un módulo Visual Basic en cualquier aplicación que pueda actuar como un componente ActiveX. Por ejemplo, podría ejecutar el siguiente código desde Microsoft Excel o Microsoft Visual Basic.

Cuando la variable que apunta al objeto Application se sale de alcance, se cierra igualmente la instancia de Microsoft Access que representa. Por tanto, debería declarar esta variable a nivel del módulo.

' Introduzca lo siguiente en la sección Declaraciones del módulo.

Dim appAccess As Access.Aplicación

Sub CrearFormulario ()

Const ConCadRutaEjemplos = "C:\Archivos de programa\Microsoft Office\Office\Ejemplos\"

Dim frm As Formulario, cadDB As String

' Inicializar cadena a la ruta de la base de datos.

cadDB = ConCadRutaEjemplos & "Neptuno.mdb"

' Crear una nueva instancia de Microsoft Access.

Set appAccess = CreateObject("Access.Aplicación.8")

' Abrir base de datos en la ventana Microsoft Access.

appAccess.OpenCurrentDatabase cadDB

' Crear nuevo formulario.

Set frm = appAccess.CreateForm

' Guardar nuevo formulario.

appAccess.DoCmd.Guardar (Save) , "NuevoFormulario1"

' Cerrar base de datos actualmente abierta.

appAccess.CloseCurrentDatabase

Set AppAccess = Nothing

End Sub


Método DefaultControl

El método DefaultControl devuelve un objeto Control con el que puede establecer las propiedades predeterminadas para un tipo particular de control en un formulario en concreto. Por ejemplo, antes de crear un cuadro de texto en un formulario, podría desear establecer las propiedades predeterminadas para el cuadro de texto. Luego puede crear un número de cuadros de texto que tengan los mismos valores básicos de las propiedades, en lugar de tener que establecer individualmente las propiedades para cada cuadro de texto una vez que se haya creado.

Sintaxis

Set control = object.DefaultControl(TipoDeControl)

El método DefaultControl tiene los siguientes argumentos.

Argumento	Descripción
Control	Un objeto Control para el que van a ser establecidas las propiedades predeterminadas.
Objeto	Un objeto Formulario (Form) o Informe (Report) en el que se van a crear los controles. Los valores predeterminados de las propiedades definidas para un tipo de control sólo se aplican a los controles del mismo tipo creados en este formulario o informe.
TipoDeControl	Una constante intrínseca que indica el tipo de control para el que se van a establecer los valores predeterminados de las propiedades.
Comentarios

El método DefaultControl permite establecer desde el código las propiedades predeterminadas de un control. Una vez que haya establecido las propiedades predeterminadas para un tipo particular de control, cada control de ese tipo creado posteriormente tendrá los mismos valores predeterminados.

Por ejemplo, si establece la propiedad TamañoDeFuente (FontSize) del botón de comando predeterminado a 12, cada botón de comando nuevo tendrá un tamaño de fuente de 12 puntos.

No todas las propiedades de un control están disponibles como propiedades predeterminadas. Las propiedades predeterminadas disponibles para un control dependen del tipo de control.

El método DefaultControl devuelve un objeto Control del tipo especificado por el argumento TipoDeControl. Este objeto Control no representa un control activo en un formulario, sino un control predeterminado que es una plantilla para todos los controles de ese tipo creados posteriormente. Las propiedades predeterminadas de control para el objeto Control devuelto por el método DefaultControl se establecen de la misma forma que las propiedades para un control individual en un formulario.

Para obtener una lista de las constantes intrínsecas que pueden ser pasadas como argumento TipoDeControl, consulte la función CreateControl. Estas constantes son enumeradas también en el módulo Constantes de la biblioteca de Microsoft Access en el Examinador de objetos.

El método DefaultControl sólo se puede utilizar en la vista Diseño del formulario o a la vista Diseño del informe. Si se intenta aplicar este método a un formulario o informe que no esté en la vista Diseño, se producirá un error en tiempo de ejecución.

Si se intenta establecer con el método DefaultControl una propiedad que no puede ser establecida como propiedad predeterminada, se producirá un error en tiempo de ejecución. Para determinar qué propiedades pueden ser propiedades predeterminadas, liste la colección Properties del objeto Control devuelto por el método DefaultControl.


Ejemplo del método DefaultControl

El siguiente ejemplo crea un nuevo formulario y utiliza el método DefaultControl para devolver un objeto Control que represente el botón de comando predeterminado. El procedimiento establece alguna de las propiedades predeterminadas para el botón de comando y luego crea un nuevo botón de comando en el formulario.

Sub EstablecerPropiedadesPredeterminadas ()

Dim frm As Formulario, ctlPredeterminada As Control, ctlNueva As Control

' Crear el nuevo formulario.

Set frm = CreateForm

' Devolver objeto de control que representa botón de comando predeterminado.

Set ctlPredeterminado = frm.DefaultControl(acBotónComando)

' Establecer algunas propiedades predeterminadas.

With ctlPredeterminada

.FontWeight = 700

.TamañoDeFuente = 12

.Anchura = 3000

.Altura = 1000

End With

' Crear un nuevo botón de comando.

Set ctlNueva = CreateControl(frm.Nombre, acBotónComando , , , 500, 500)

' Establecer título del control.

ctlNuevo.título = "Nuevo botón de comando"

' Restaurar formulario.

DoCmd.Restaurar

End Sub


Método SizeToFit

Se puede utilizar el método SizeToFit para ajustar un control de forma que quepa el texto o imagen que contiene. Por ejemplo, se puede aplicar el método SizeToFit a un botón de comando que es demasiado pequeño para mostrar todo el texto en su propiedad Título (Caption).

Sintaxis

control.SizeToFit

El método SizeToFit tiene el siguiente argumento.

Argumento	Descripción
control	Un control que muestra texto o una imagen, incluyendo la ficha, botón de alternar, botón de comando, imagen, marco de objeto no dependiente y controles de subformulario/subinforme.
Comentarios

La utilización del método SizeToFit es equivalente a seleccionar un control en un formulario o informe, señalar Tamaño en el menú Formato y hacer clic en Ajustar. Sólo se puede aplicar el método SizeToFit a controles en la vista Diseño del formulario o la vista Diseño del informe.

El método SizeToFit hará que un control sea mayor o menor, dependiendo del tamaño del texto o imagen que contenga.

Puede utilizar el método SizeToFit en conjunción con la función CreateControl para ajustar el tamaño de los controles nuevos que haya creado en el código.

Nota   No todos los controles que contienen texto o una imagen pueden ser ajustados en tamaño por el método SizeToFit. Algunos controles son dependientes de datos que pueden variar en tamaño de un registro al siguiente. Estos controles incluyen los controles de cuadro de texto, cuadro de lista, cuadro combinado y marcos de objetos dependientes.


Ejemplo del método SizeToFit

El siguiente ejemplo crea un nuevo formulario y crea un nuevo botón de comando en el formulario. El procedimiento establece luego la propiedad Título (Caption) del control y ajusta el tamaño del control para que quepa el título.

Sub AjustarTamañoNuevoControl()

Dim frm As Formulario, ctl As Control

' Crear nuevo formulario.

Set frm = CreateForm

' Crear nuevo botón de comando.

Set ctl = CreateControl(frm.Nombre, acBotónDeComando, , , , 500, 500)

' Restaurar formulario.

DoCmd.Restore

' Establecer la propiedad Título del control.

ctl.Título = "Título del control demasiado largo"

' Ajustar tamaño para que quepa el título.

ctl.SizeToFit

End Sub


Método DefaultWorkspaceClone

Se puede utilizar el método DefaultWorkspaceClone para crear un nuevo objeto Workspace sin que haga falta que el usuario inicie de nuevo una sesión. Por ejemplo, si necesita llevar a cabo dos conjuntos de transacciones de forma simultánea en espacios de trabajo separados, se puede utilizar el método DefaultWorkspaceClone para crear un segundo objeto Workspace con el mismo nombre de usuario y contraseña sin tener que pedir esta información de nuevo al usuario.

Sintaxis

application.DefaultWorkspaceClone

El método DefaultWorkspaceClone tiene el siguiente argumento.

Argumento	Descripción
aplicación	El objeto Application.
Comentarios

El método DefaultWorkspaceClone crea una copia del objeto Workspace predeterminado en Microsoft Access. Las propiedades de la copia del objeto Workspace tienen valores idénticos a los del objeto Workspace predeterminado, excepto por el valor de la propiedad Nombre (Name). Para el objeto Workspace predeterminado, el valor de la propiedad Nombre (Name) es siempre #Workspace predeterminado#. Para el caso del objeto Workspace copiado, es #AccesoCopia#.

La propiedad UserName del objeto Workspace predeterminado indica el nombre bajo el cuál inició la sesión el usuario activo. El objeto Workspace copiado es equivalente al objeto Workspace que sería creado si el mismo usuario iniciara de nuevo una sesión con la misma contraseña.


Ejemplo del método DefaultWorkspaceClone

El siguiente ejemplo copia el objeto Workspace predeterminado y después lista las propiedades de cada objeto Workspace.

Sub CopiaWorkspace()

Dim wrkPredeterminado As Workspace, wrkCopia As Workspace

Dim prp As Property

On Error Resume Next

' Obtener workspace predeterminado

Set wrkPredeterminado = DBEngine.Workspaces(0)

' Copiar workspace predeterminado.

Set wrkCopia = Aplicación.DefaultWorkspaceClone

' Enumerar propiedades de cada workspace.

For Each prp In wrkPredeterminado.Propiedades

Debug.Print ">>>"; prp.Nombre; "   "; prp.Valor

Next prp

For Each prp In wrkCopia.Propiedades

Debug.Print ">>>"; prp.Nombre; "   "; prp.Valor

Next prp

End Sub


Función Nz

Puede utilizar la función Nz para devolver cero, una cadena de longitud cero (" ") o cualquier otro valor especificado cuando una Variante sea Null. Por ejemplo, se puede utilizar esta función para convertir un valor Null a otro valor y evitar que se propague a través de una expresión.

Sintaxis

Nz(variante[, valorsinull])

La función Nz tiene los siguientes argumentos.

Argumento	Descripción
variante	Una variable de tipo de datos Variante.
Valorsinull	Opcional (a menos que se use en una consulta). Una Variante que suministra un valor que debe ser devuelto si el argumento variante es Null. Este argumento permite devolver un valor distinto de cero o una cadena de longitud cero. Si usa la función Nz en una expresión en una consulta sin usar el argumento Valorsinull, el resultado puede estar en blanco si los campos contienen valores nulos.
Si el valor del argumento variante es Null, la función Nz devuelve el número cero o una cadena de longitud cero, dependiendo de si el contexto indica que el valor debería de ser un número o una cadena. Si se incluye el argumento opcional valorsinull, entonces la función Nz devolverá el valor especificado por ese argumento si el argumento variante es Null.

SI el valor de variante no es Null, entonces la función Nz devuelve el valor de variante.

Comentarios

La función Nz es útil para las expresiones que pueden incluir valores Null. Para forzar que una expresión se evalúe a un valor no Null aunque contenga un valor Null, utilice la función Nz para devolver un cero, una cadena de longitud cero o un valor de retorno personalizado.

Por ejemplo, la expresión 2 + varX devolverá siempre un valor Null cuando la Variante varX sea Null. Sin embargo, 2 + Nz(varX) devolverá 2.

La función Nz se puede utilizar a menudo como una alternativa a la función SiInm (IIf). Por ejemplo, en el código siguiente, son necesarias dos expresiones que contengan la función SiInm (IIf) para devolver el resultado deseado. La primera expresión incluyendo la función SiInm (IIf) se utiliza para comprobar el valor de una variable y convertirla a cero si es Null.

varTemp = IIf(EsNull(varCargo), 0, varCargo)

varResultado = IIf(varTemp > 50, "Alto", "Bajo")

En el siguiente ejemplo, la función Nz ofrece la misma funcionalidad que la primera expresión y el resultado deseado se consigue en un paso en lugar de en dos.

varResultado = IIf(Nz(varCargo) > 50, "Alto", "Bajo")

Si se suministra un valor para el argumento opcional valorsinull, ese valor será devuelto cuando variante sea Null. Incluyendo este argumento opcional, se puede evitar la utilización de una expresión que contenga la función SiInm (IIf). Por ejemplo, la siguiente expresión utiliza la función SiInm (IIf) para devolver una cadena si el valor de varCargo es Null.

varResultado = IIf(EsNull(varCargo), "No factura por cargo", varCargo)

En el siguiente ejemplo, el argumento opcional suministrado a la función Nz ofrece la cadena a ser devuelta si varCargo es Null.

varResultado = Nz(varCargo, "No factura por cargo")


Ejemplo de la función Nz

El siguiente ejemplo evalúa un control en un formulario y devuelve una de entre dos cadenas, basándose en el valor del control. Si el valor del control es Null, el procedimiento utiliza la función Nz para convertir un valor Null en una cadena de longitud cero.

Sub ComprobarValor()

Dim frm As Formulario, ctl As Control

Dim varResultado As Variante

' Devolver variable objeto Formulario que apunta a formulario Pedidos.

Set frm = Forms!Pedidos

' Devolver variable objeto Control que apunta a RegiónEnvío.

Set ctl = frm!RegiónEnvío

' Elegir resultado basado en valor de control.

varResultado = If(Nz(ctl.Valor) = "", "Sin valor", "El valor es " & ctl.Valor)

' Mostrar resultado.

CuadroMsj varResultado

End Sub


Método RefreshTitleBar

El método RefreshTitleBar actualiza la barra de títulos de Microsoft Access después de que se hayan establecido las propiedades AppTitle o AppIcon en Visual Basic. Por ejemplo, se puede cambiar el título en la barra de títulos de Microsoft Access a "Base de datos de contactos" estableciendo la propiedad TítuloDeLaAplicación (AppTitle).

Sintaxis

aplicación.RefreshTitleBar

El método RefreshTitleBar utiliza el siguiente argumento.

Argumento	Descripción
aplicación	El objeto Application.
Comentarios

Las propiedades TítuloDeLaAplicación (AppTitle)y IconoDeLaAplicación (AppIcon) permiten personalizar su aplicación cambiando el título y el icono que aparece en la barra de títulos de Microsoft Access. La barra de títulos no se actualiza automáticamente después de que haya establecido estas propiedades. Para que aparezca la barra de títulos, se debe utilizar el método RefreshTitleBar.

Se pueden restablecer las propiedades TítuloDeLaAplicación (AppTitle) y IconoDeLaAplicación (AppIcon) a su valor predeterminado eliminándolas de la colección Properties del objeto Database que represente a la base de datos activa. Después de eliminar estas propiedades, debe utilizarse el método RefreshTitleBar para restaurar los valores predeterminados en la barra de títulos.


Ejemplo del método RefreshTitleBar

El siguiente ejemplo establece la propiedad TítuloDeLaAplicación (AppTitle) de la base de datos activa y aplica el método RefreshTitleBar para actualizar la barra de títulos.

Sub CambiarTítulo ()

Dim dbs As Database, prp As Property

Const conErrorPropNoEncontrada = 3270

On Error GoTo ControladorErrores

' Devolver variable objeto Base de datos que apunta

' a la base de datos actual.

Set dbs = BdActiva

' Cambiar barra de títulos.

dbs.Propiedades!AppTitle = " Base de datos de Contactos "

' Actualizar barra de títulos en la pantalla.

Application.RefreshTitleBar

Exit Sub

ControladorErrores:

If Err.Número = conErrorPropNoEncontrada Then

Set prp = dbs.CreateProperty("AppTitle", dbTexto, "Base de datos de Contactos ")

dbs.Propiedades.Append prp

Else

CuadroMsj "Error: " & Err.Número & vbCrLf & Err.Descripción

End If

Resume Next

End Sub


Método AddToFavorites

El método AddToFavorites agrega a la carpeta Favoritos una dirección de hipervínculo.

Sintaxis

objeto.hipervínculo.AddToFavorites

El método AddToFavorites tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Application o un objeto Control que contiene un hipervínculo. Los controles de etiqueta, botón de comando e imagen pueden contener hipervínculos.
hipervínculo	El hipervínculo del objeto Control.
Comentarios

Cuando se aplica a un objeto Application, el método AddToFavorites agrega el nombre de la base de datos actual a la carpeta Favoritos. Por ejemplo, si está trabajando con la base de datos de ejemplo Neptuno, al aplicar el método AddToFavorites al objeto Application se agrega la dirección de hipervínculo de la base de datos Neptuno a la carpeta Favoritos.

Cuando se aplica a un objeto Control,el método AddToFavorites agrega a la carpeta Favoritos la dirección de hipervínculo contenida en un control. La carpeta Favoritos está instalada de forma predeterminada en la carpeta de Windows.

El método AddToFavorites tiene el mismo efecto que hacer clic en Agregar a Favoritos en el menú Favoritos de la barra de herramientas Web cuando el documento cuya dirección desea agregar está abierto.


Ejemplo del método AddToFavorites

El ejemplo siguiente establece la propiedad DirecciónDeHipervínculo (HyperlinkAddress) de un botón de comando. Cuando el usuario hace clic en el botón de comando, la dirección se agrega a la carpeta Favoritos mediante el método AddToFavorites.

Para probar este ejemplo, cree un nuevo formulario y agregue un botón de comando denominado Comando0. Pegue el código siguiente en el módulo del formulario. Cambie a la vista Formulario y haga clic en el botón de comando.

Private Sub Form_Load()

Me!Comando0.HyperlinkAddress = "http://www.microsoft.com/"

End Sub

Private Sub Comando0_Click()

Me!Comando0.Hyperlink.AddToFavorites

End Sub


Método AddFromFile (Objeto Module)

El método AddFromFile agrega el contenido de un archivo de texto a un objeto Module. El objeto Module puede ser un módulo estándar o un módulo de clase.

Sintaxis

objeto.AddFromFile nombredearchivo

El método AddFromFile tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Module.
nombredearchivo	El nombre y la ruta de acceso completa de un archivo de texto (.txt) u otro archivo que contenga texto en formato ANSI.
Comentarios

El método AddFromFile sitúa el contenido del archivo de texto especificado inmediatamente después de la sección Declaraciones y antes del primer procedimiento del módulo si contiene otros procedimientos.

El método AddFromFile permite importar código o comentarios almacenados en un archivo de texto.

Para agregar el contenido de un archivo a un módulo de un formulario o un informe, el formulario o el informe debe estar abierto en la vista Diseño del formulario o en la vista Diseño del informe. Para agregar el contenido de un archivo a un módulo estándar o un módulo de clase, el módulo debe estar abierto.


Ejemplo de los métodos AddFromFile y AddFromString

La función siguiente utiliza los métodos AddFromString y AddFromFile para agregar una cadena y el contenido de un archivo de texto a un módulo estándar:

Function AgregarTextoAMódulo(cadNombreMódulo As String, cadNombreArchivo As String, cadTexto As String) As Boolean

Dim mdl As Module

On Error GoTo Error_AgregarTextoAMódulo

DoCmd.OpenModule cadNombreMódulo

Set mdl = Modules(cadNombreMódulo)

mdl.AddFromFile cadNombreArchivo

mdl.AddFromString cadTexto

AgregarTextoAMódulo = True

Exit_AgregarTextoAMódulo:

Exit Function

Error_AgregarTextoAMódulo:

MsgBox Err & ": " & Err.Description

AgregarTextoAMódulo = False

Resume Exit_AgregarTextoAMódulo

End Function

Puede llamar a la función anterior desde un procedimiento como el que se muestra a continuación. Cree un archivo de texto denominado Funciones.txt, agréguele algunos procedimientos de Visual Basic y guárdelo en el directorio Mis documentos. A continuación, pegue el procedimiento anterior y el procedimiento siguiente en un nuevo módulo estándar en la base de datos de ejemplo Neptuno. Ejecute el procedimiento siguiente:

Sub AgregarFuncionesDelTexto()

Dim cadNombreMódulo As String, cadNombreArchivo As String

Dim cadTexto As String

cadNombreMódulo = "Funciones de utilidades"

cadNombreArchivo = "C:\Mis documentos\Funciones.txt"

cadTexto = "Public entX As Integer" & vbCrLf _

& "Const conNombreRutaAcceso As String = " _

& """C:\Archivos de programa\Microsoft Office\Office\Ejemplos\"""

If AgregarTextoAMódulo(cadNombreMódulo, cadNombreArchivo, cadTexto) = True Then

Debug.Print "Cadena y contenido del archivo agregados correctamente."

Else

Debug.Print "Cadena y contenido del archivo no agregados correctamente."

End If

End Sub

El ejemplo siguiente crea un nuevo formulario y agrega una cadena y el contenido del archivo Funciones.txt a su módulo. Ejecute el procedimiento siguiente desde un módulo estándar:

Sub AgregarTextoAMóduloDeFormulario()

Dim frm As Form, mdl As Module

Set frm = CreateForm

Set mdl = frm.Module

mdl.AddFromString "Public entY As Integer"

mdl.AddFromFile "C:\Mis documentos\Funciones.txt"

End Sub


Método AddFromString

El método AddFromString agrega una cadena a un objeto Module. El objeto Module puede ser un módulo estándar o un módulo de clase.

Sintaxis

objeto.AddFromString expresióndecadena

El método AddFromString tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Module.
expresióndecadena	Una expresión de cadena.
Comentarios

El método AddFromString sitúa el contenido de una cadena después de la sección Declaraciones y antes del primer procedimiento existente en el módulo si el módulo contiene otros procedimientos.

Para agregar una cadena a un módulo de formulario o de informe, el formulario o el informe debe estar abierto en la vista Diseño del formulario o la vista Diseño del informe respectivamente. Para agregar una cadena a un módulo estándar o un módulo de clase, el módulo debe estar abierto.


Método CreateEventProc

El método CreateEventProc crea un procedimiento de evento en un módulo de clase. Este método devuelve un valor Largo que indica el número de línea de la primera línea del procedimiento de evento.

Sintaxis

objeto.CreateEventProc(nombreevento, nombreobjeto)

El método CreateEventProc tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Module de un formulario o un informe cuya propiedad Type devuelve acClassModule, una constante con el valor 1.
nombreevento	Una expresión de cadena que da como resultado el nombre de un evento.
nombreobjeto	Un objeto que tiene el evento especificado por el argumento nombreevento. Puede ser un objeto Formulario (Form), Informe (Report) o Control, o bien una sección de un formulario,un informe, o un módulo de clase.
Comentarios

El método CreateEventProc crea un código stub para un procedimiento de evento para el objeto especificado. Por ejemplo, puede utilizar este método para crear un procedimiento de evento Click para un botón de comando de un formulario. Microsoft Access crea el procedimiento de evento Click en el módulo asociado al formulario que contiene el botón de comando.

Una vez creado el código stub de procedimiento de evento mediante el método CreateEventProc, puede agregar líneas de código al procedimiento a través de otros métodos del objeto Module. Por ejemplo, puede utilizar el método InsertLines para insertar una línea de código.


Ejemplo de los métodos CreateEventProc e InsertLines

El ejemplo siguiente crea un formulario nuevo, agrega un botón de comando y crea un procedimiento de evento Click para el botón de comando:

Function ProcEventoClick() As Boolean

Dim frm As Form, ctl As Control, mdl As Module

Dim lngDevolver As Long

On Error GoTo Error_ProcEventoClick

' Crear un formulario nuevo.

Set frm = CreateForm

' Crear un botón de comando en el formulario.

Set ctl = CreateControl(frm.Name, acCommandButton, , , , 1000, 1000)

ctl.Caption = "Haga clic aquí"

' Devolver referencia al módulo de formulario.

Set mdl = frm.Module

' Agregar el procedimiento de evento.

lngDevolver = mdl.CreateEventProc("Haga clic en", ctl.Name)

' Insertar texto en el cuerpo del procedimiento.

mdl.InsertLines lngDevolver + 1, vbTab & "MsgBox ""¡Ya está!"""

ProcEventoClick = True

Exit_ProcEventoClick:

Exit Function

Error_ProcEventoClick:

MsgBox Err & " :" & Err.Description

ProcEventoClick = False

Resume Exit_ProcEventoClick

End Function


Método AddFromFile (colección References)

El método AddFromFile crea una referencia a una biblioteca de tipos de un archivo especificado.

Sintaxis

Set objeto = References.AddFromFile(nombrearchivo)

El método AddFromFile tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Reference.
nombrearchivo	Una expresión de cadena que da como resultado la ruta de acceso completa y el nombre de archivo del archivo que contiene la biblioteca de tipos a la cual desea establecer una referencia.
Comentarios

La tabla siguiente enumera los tipos de archivo que contienen normalmente bibliotecas de tipos.

Extensión del archivo	Tipo de archivo
.olb, .tlb	Archivo de biblioteca de tipos
.mdb, .mda, .mde	Base de datos
.exe, .dll	Archivo ejecutable
.ocx	Control ActiveX


Ejemplo del método AddFromFile (colección References)

El ejemplo siguiente crea una referencia a una biblioteca de tipos especificada:

Function ReferenciaDelArchivo(cadNombreArchivo As String) As Boolean

Dim ref As Reference

On Error GoTo Error_ReferenciaDelArchivo

' Crear una nueva referencia.

Set ref = References.AddFromFile(cadNombreArchivo)

ReferenciaDelArchivo = True

Exit_ReferenciaDelArchivo:

Exit Function

Error_ReferenciaDelArchivo:

MsgBox Err & ": " & Err.Description

ReferenciaDelArchivo = False

Resume Exit_ReferenciaDelArchivo

End Function

Puede llamar a esta función mediante un procedimiento como el siguiente, que crea una referencia al control Calendario:

Sub CrearReferenciaCalendario()

If ReferenciaDelArchivo("C:\Windows\System\Mscal.ocx") = True Then

MsgBox "Referencia al control Calendario creada correctamente."

Else

MsgBox "Referencia al control Calendario no creada correctamente."

End If

End Sub


Método AddFromGUID

El método AddFromGUID crea un objeto Reference basado en el GUID que identifica a una biblioteca de tipos.

Sintaxis

objeto.AddFromGUID(guid)

El método AddFromGUID tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Reference.
guid	Un GUID que identifica a una biblioteca de tipos.
Comentarios

La propiedad GUID devuelve el GUID de un objeto Reference especificado. Si ha almacenado el valor de la propiedad GUID, puede utilizarlo para volver a crear una referencia que se haya roto.


Método DeleteLines

El método DeleteLines elimina líneas de un módulo estándar o un módulo de clase.

Sintaxis

objeto.DeleteLines líneainicio, recuento

El método DeleteLines tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Module.
líneainicio	Un valor Largo que especifica el número de la línea en la cual debe comenzar la eliminación.
Recuento	Un valor Largo que especifica el número de líneas que se van a eliminar.
Comentarios

Las líneas de un módulo se numeran a partir de uno. Para determinar el número de líneas de un módulo, utilice la propiedad CountOfLines.

Para reemplazar una línea por otra línea, utilice el método ReplaceLine.


Ejemplo del método DeleteLines y la propiedad Lines

El ejemplo siguiente elimina una línea especificada de un módulo.

Function EliminarLíneaCompleta(cadNombreMódulo, cadTexto As String) As Boolean

Dim mdl As Module, lngNúmLíneas As Long

Dim lngLíneaI As Long, lngColI As Long

Dim lngLíneaF As Long, lngColF As Long

Dim cadTemp As String

On Error GoTo Error_EliminarLíneaCompleta

DoCmd.OpenModule cadNombreMódulo

Set mdl = Modules(cadNombreMódulo)

If mdl.Find(cadTexto, lngLíneaI, lngColI, lngLíneaF, lngColF) Then

lngNúmLíneas = Abs(lngLíneaF - lngLíneaI) + 1

cadTemp = LTrim$(mdl.Lines(lngLíneaI, lngNúmLíneas))

cadTemp = RTrim$(cadTemp)

If cadTemp = cadTexto Then

mdl.DeleteLines lngLíneaI, lngNúmLíneas

Else

MsgBox "La línea contiene texto además de '" _

& cadTexto & "'."

End If

Else

MsgBox "Texto '" & cadTexto & "' no encontrado."

End If

EliminarLíneaCompleta = True

Exit_EliminarLíneaCompleta:

Exit Function

Error_EliminarLíneaCompleta:

MsgBox Err & " :" & Err.Description

EliminarLíneaCompleta = False

Resume Exit_EliminarLíneaCompleta

End Function

Puede llamar a esta función desde un procedimiento como el siguiente, que busca en el módulo Módulo1 una declaración de constante y la elimina.

Sub EliminarConstPi()

If EliminarLíneaCompleta("Módulo1", "Const conPi = 3.14") Then

Debug.Print "Declaración de constante eliminada correctamente."

Else

Debug.Print "Declaración de constante no eliminada."

End If

End Sub


Método Find

El método Find encuentra texto especificado en un módulo estándar o un módulo de clase.

Sintaxis

objeto.Find(destino, líneainicio, columnainicio, líneafin, columnafin[, palabracompleta, coincidirmayúsculas, búsquedamodelo])

El método Find tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Module.
destino	Una expresión de cadena que da como resultado el texto que desea encontrar.
líneainicio	Un valor Largo que especifica la línea en la que debe comenzar la búsqueda. Si se encuentra una coincidencia, el valor del argumento líneainicio se establece a la línea en la que se encuentra el carácter inicial del texto coincidente.
columnainicio	Un valor Largo que especifica la columna en la que desea comenzar la búsqueda. Cada carácter de una línea se encuentra en una columna independiente, comenzando por cero en el lado izquierdo del módulo. Si se encuentra una coincidencia, el valor del argumento columnainicio se establece a la columna en la que se encuentra el carácter inicial del texto coincidente.
líneafin	Un valor Largo que especifica la línea en la que debe detenerse la búsqueda. Si se encuentra una coincidencia, el valor del argumento líneafin se establece a la línea en la que se encuentra el carácter final del texto coincidente.
columnafin	Un valor Largo que especifica la columna en la que debe detenerse la búsqueda. Si se encuentra una coincidencia, el valor del argumento columnafin se establece a la columna en la que se encuentra el carácter inicial del texto coincidente.
palabracompleta	Opcional. Un valor Boolean en el que True (–1) da como resultado una búsqueda de palabras completas exclusivamente y False (0) da como resultado una búsqueda de partes de palabras. El valor predeterminado es False.
coincidirmayúsculas	Opcional. Un valor Boolean en el que True da como resultado una búsqueda de palabras cuyo uso de mayúsculas y minúsculas debe coincidir con el del argumento destino y False da como resultado una búsqueda de palabras independientemente del uso de mayúsculas. El valor predeterminado es False.
búsquedamodelo	Opcional. Un valor Boolean en el que True da como resultado una búsqueda en la que el argumento destino puede contener caracteres comodín como un asterisco (*) o un signo de interrogación (?), y False da como resultado una búsqueda sin tener en cuenta los signos de interrogación ni los asteriscos como caracteres comodín. El valor predeterminado es False.
Comentarios

El método Find busca la cadena de texto especificada en un objeto Module. Si se encuentra la cadena, el método Find devuelve True; de lo contrario, devuelve False.

Para determinar la posición en el módulo en la que comienza el texto de búsqueda, pase variables en blanco al método Find para los argumentos líneainicio, columnainicio, líneafin y columnafin. Si se encuentra una coincidencia, estos argumentos contendrán el número de línea y la posición de columna en la que comienza (líneainicio, columnainicio) y termina (líneafin, columnafin) el texto de búsqueda.

Por ejemplo, si el texto de búsqueda se encuentra en la línea 5, comienza en la columna 10 y termina en la columna 20, los valores de estos argumentos serán: líneainicio = 5, columnainicio = 10, líneafin = 5, columnafin = 20.


Ejemplo de los métodos Find y ReplaceLine

La función siguiente encuentra una cadena especificada en un módulo y reemplaza la línea que contiene esa cadena por una línea especificada nueva.

Function BuscarYReemplazar(cadNombreMódulo As String, cadTextoBúsqueda As String, _

cadTextoNuevo As String) As Boolean

Dim mdl As Module

Dim lngLíneaI As Long, lngColI As Long

Dim lngLíneaF As Long, lngColF As Long

Dim cadLínea As String, cadLíneaNueva As String

Dim entCar As Integer, entAntes As Integer, entDespués As Integer

Dim cadIzquierda As String, cadDerecha As String

' Abrir el módulo.

DoCmd.OpenModule cadNombreMódulo

' Devolver referencia al objeto Module.

Set mdl = Modules(cadNombreMódulo)

' Buscar la cadena.

If mdl.Find(cadTextoBúsqueda, lngLíneaI, lngColI, lngLíneaF, lngColF) Then

' Almacenar el texto de la línea que contiene la cadena.

cadLínea = mdl.Lines(lngLíneaI, Abs(lngLíneaF - lngLíneaI) + 1)

' Determinar la longitud de la línea.

entCar = Len(cadLínea)

' Determinar el número de caracteres que preceden el texto de búsqueda.

entAntes = lngColI - 1

' Determinar el número de caracteres que siguen al texto de búsqueda.

entDespués = entCar - CInt(lngColF) - 1

' Almacenar los caracteres a la izquierda del texto de búsqueda.

cadIzquierda = Left$(cadLínea, entAntes)

' Almacenar los caracteres a la derecha del texto de búsqueda.

cadDerecha = Right$(cadLínea, entDespués)

' Crear una cadena con el texto de reemplazo.

cadLíneaNueva = cadIzquierda & cadTextoNuevo & cadDerecha

' Reemplazar la línea original.

mdl.ReplaceLine lngLíneaI, cadLíneaNueva

BuscarYReemplazar = True

Else

MsgBox "Texto no encontrado."

BuscarYReemplazar = False

End If

Exit_BuscarYReemplazar:

Exit Function

Error_BuscarYReemplazar:

MsgBox Err & ": " & Err.Description

BuscarYReemplazar = False

Resume Exit_BuscarYReemplazar

End Function


Método Follow

El método Follow abre la página web o el documento especificado por una dirección de hipervínculo asociada a un control de un formulario o un informe.

Sintaxis

objeto.hipervínculo.Follow[([ventananueva], [agregarhistorial], [infoextra], [método], [infoencabezado])]

El método Follow tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Control que contiene un hipervínculo. Los controles de etiqueta, botón de comando e imagen pueden contener hipervínculos.
hipervínculo	El hipervínculo al objeto Control.
ventananueva	Un valor Boolean en el que True (–1) abre el documento en una ventana nueva y False (0) abre el documento en la ventana actual. El valor predeterminado es False.
agregarhistorial	Un valor Boolean en el que True agrega el hipervínculo a la carpeta Historial y False no agrega el hipervínculo a la carpeta Historial. El valor predeterminado es True.
infoextra	Una cadena o una matriz de datos Byte que especifica información adicional para desplazarse a un hipervínculo. Por ejemplo, este argumento puede utilizarse para especificar un parámetro de búsqueda para un archivo .ASP o .IDC. En su explorador Web, el argumento infoextra puede aparecer después de la dirección de hipervínculo, separado de la misma por un signo de interrogación (?). No es necesario que incluya el signo de interrogación cuando especifique el argumento infoextra.
método	Un valor Entero que especifica cómo se anexa el argumento infoextra. El argumento método puede ser una de las siguientes constantes intrínsecas.
	Constante	Descripción
	msoMethodGet	El argumento infoextra se anexa a la dirección de hipervínculo y sólo puede ser una cadena. Este valor se pasa de forma predeterminada.
	msoMethodPost	El argumento infoextra se transmite, ya sea mediante una cadena o mediante una matriz del tipo Byte.
infoencabezado	Una cadena que especifica información acerca del encabezado. De forma predeterminada, el argumento infoencabezado es una cadena de longitud cero (" ").
Comentarios

El método Follow tiene el mismo efecto que la acción de hacer clic en un hipervínculo.

Puede incluir el método Follow en un procedimiento de evento si desea abrir un hipervínculo en respuesta a una acción de un usuario. Por ejemplo, es posible que desee abrir una página web con información de referencia cuando el usuario abre un formulario determinado.

Al utilizar el método Follow, no es necesario que agregue la dirección especificada por la propiedad DirecciónDeHipervínculo (HyperlinkAddress). Sólo es necesario que conozca el nombre del control que contiene el hipervínculo. Por el contrario, cuando se utiliza el método FollowHyperlink, se debe especificar la dirección del hipervínculo determinado que desea seguir.


Ejemplo del método Follow

El ejemplo siguiente establece la propiedad DirecciónDeHipervínculo (HyperlinkAddress) de un botón de comando y, a continuación, abre el hipervínculo cuando se carga el formulario.

Para probar este ejemplo, cree un formulario y agregue un botón de comando denominado Comando0. Pegue el código siguiente en el módulo del formulario y cámbiese a la vista Formulario:

Private Sub Form_Load()

Dim ctl As CommandButton

Set ctl = Me!Comando0

With ctl

Visible = False

.HyperlinkAddress = "http://www.microsoft.com/"

ctl.Hyperlink.Follow

End Width

End Sub


Método FollowHyperlink

El método FollowHyperlink abre la página web o el documento especificado por una dirección de hipervínculo.

Sintaxis

[aplicación.]FollowHyperlink dirección, [subdirección], [ventananueva], [agregarhistorial], [infoextra], [método], [infoencabezado]

El método FollowHyperlink tiene los siguientes argumentos.

Argumento	Descripción
aplicación	El objeto Application de Microsoft Access.
dirección	Una expresión de cadena que da como resultado una dirección de hipervínculo válida.
subdirección	Una expresión de cadena que da como resultado una ubicación mencionada en el documento especificado por el argumento dirección. El valor predeterminado es una cadena de longitud cero (" ").
ventananueva	Un valor Boolean en el que True (–1) abre el documento en una ventana nueva y False (0) lo abre en la ventana actual. El valor predeterminado es False.
agregarhistorial	Un valor Boolean en el que True agrega el hipervínculo a la carpeta Historial y False no agrega el hipervínculo a la carpeta Historial. El valor predeterminado es True.
infoextra	Una cadena o una matriz de datos Byte que especifica información adicional para desplazarse a un hipervínculo. Por ejemplo, este argumento puede utilizarse para especificar un parámetro de búsqueda para un archivo .ASP o .IDC. En su explorador Web, el argumento infoextra puede aparecer después de la dirección de hipervínculo, separado de la misma por un signo de interrogación (?). No es necesario que incluya el signo de interrogación cuando especifique el argumento infoextra.
método	Un valor Entero que especifica cómo se anexa el argumento infoextra. El argumento método puede ser una de las siguientes constantes intrínsecas.
	Constante	Descripción
	msoMethodGet	El argumento infoextra se anexa a la dirección de hipervínculo y sólo puede ser una cadena. Este valor se pasa de forma predeterminada.
	msoMethodPost	El argumento infoextra se trasmite, ya sea mediante una cadena o mediante una matriz de tipo Byte.
infoencabezado	Una cadena que especifica información del encabezado. De forma predeterminada, el argumento infoencabezado es una cadena de longitud cero.
Comentarios

Mediante el método FollowHyperlink, puede seguir un hipervínculo que no existe en un control. Este hipervínculo puede ser suministrado por usted o por el usuario. Por ejemplo, puede pedir a un usuario que introduzca una dirección de hipervínculo en un cuadro de diálogo y, a continuación, utilizar el método FollowHyperlink para seguir ese hipervínculo.

Puede usar los argumentos infoextra y método para proporcionar información adicional cuando se desplace a un hipervínculo. Por ejemplo, puede proporcionar parámetros a un motor de búsqueda. Para buscar en el sitio Yahoo información sobre Microsoft, puede llamar al método FollowHyperlink de la siguiente manera:

Application.FollowHyperlink "http://search.yahoo.com/bin/search", _

, , , "p=Microsoft", msoMethodGet

Puede utilizar el método Follow para seguir un hipervínculo asociado a un control.


Ejemplo del método FollowHyperlink

La función siguiente solicita a un usuario una dirección de hipervínculo y, a continuación, sigue el hipervínculo:

Function ObtenerDirecciónDelUsuario() As Boolean

Dim cadEntradaDatos As String

On Error GoTo Error_ObtenerDirecciónDelUsuario

cadEntradaDatos = InputBox("Escriba una dirección válida")

Application.FollowHyperlink cadEntradaDatos, , True

ObtenerDirecciónDelUsuario = True

Exit_ObtenerDirecciónDelUsuario:

Exit Function

Error_ObtenerDirecciónDelUsuario:

MsgBox Err & ": " & Err.Description

ObtenerDirecciónDelUsuario = False

Resume Exit_ObtenerDirecciónDelUsuario

End Function

Puede llamar a esta función con un procedimiento como el siguiente:

Sub LlamadaAObtenerDirecciónDelUsuario()

If ObtenerDirecciónDelUsuario = True Then

MsgBox "Se ha seguido correctamente el hipervínculo."

Else

MsgBox "No se puede seguir el hipervínculo."

End If

End Sub


Método InsertLines

El método InsertLines inserta una línea o un grupo de líneas en el código en un módulo estándar o un módulo de clase.

Sintaxis

objeto.InsertLines línea, cadena

El método InsertLines tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Module.
línea	El número de la línea en la que debe comenzar la inserción.
cadena	El texto que debe insertarse en el módulo.
Comentarios

Al utilizar el método InsertLines, todo el código existente en la línea especificada por el argumento línea se desplaza hacia abajo.

Para agregar varias líneas, incluya la constante intrínseca vbCrLf en los lugares de la cadena que forma el argumento cadena en los que desee insertar finales de línea. Esta constante fuerza un retorno de carro y un fin de línea.

Las líneas de un módulo se numeran a partir de uno. Para determinar el número de líneas de un módulo, utilice la propiedad CountOfLines.


Método InsertText

El método InsertText inserta una cadena de texto especificada en un módulo estándar o en un módulo de clase.

Sintaxis

objeto.InsertText texto

El método InsertText tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Module.
texto	El texto que va a insertarse en el módulo.
Comentarios

Al insertar una cadena mediante el método InsertText, Microsoft Access sitúa el texto nuevo al final del módulo, después de todos los demás procedimientos.

Para agregar varias líneas, incluya la constante intrínseca vbCrLf en los lugares de la cadena que forma el argumento texto en los que desee insertar finales de línea. Esta constante fuerza un retorno de carro y un fin de línea.

Para especificar en qué línea se inserta el texto, utilice el método InsertLines. Para insertar código en la sección Declaraciones del módulo, emplee el método InsertLines en lugar del método InsertText.

Nota   En versiones anteriores de Microsoft Access, el método InsertText era un método del objeto Application. Todavía puede utilizar el método InsertText del objeto Application, pero se recomienda utilizar el método InsertText del objeto Module en su lugar.


Ejemplo del método InsertText

El ejemplo siguiente inserta una cadena de texto en un módulo estándar:

Function InsertarProc(cadNombreMódulo) As Boolean

Dim mdl As Module, cadTexto As String

On Error GoTo Error_InsertarProc

' Abrir el módulo.

DoCmd.OpenModule cadNombreMódulo

' Devolver referencia al objeto Module.

Set mdl = Modules(cadNombreMódulo)

' Inicializar la variable de cadena.

cadTexto = "Sub MostrarMensaje()" & vbCrLf _

& vbTab & "MsgBox ""¡No!""" & vbCrLf _

& "End Sub"

' Insertar texto en el módulo.

mdl.InsertText cadTexto

InsertarProc = True

Exit_InsertarProc:

Exit Function

Error_InsertarProc:

MsgBox Err & ": " & Err.Description

InsertarProc = False

Resume Exit_InsertarProc

End Function


Método RefreshDatabaseWindow

El método RefreshDatabaseWindow actualiza la ventana Base de datos cuando se crea, elimina o renombra una tabla, consulta, formulario, informe, macro o módulo.

Sintaxis

[aplicación.]RefreshDatabaseWindow

El método RefreshDatabaseWindow tiene el argumento siguiente.

Argumento	Descripción
aplicación	El objeto Application de Microsoft Access.
Comentarios

Puede utilizar el método RefreshDatabaseWindow para reflejar inmediatamente los cambios realizados en los objetos de Microsoft Access en la ventana Base de datos. Por ejemplo, si agrega un formulario nuevo de Visual Basic y lo guarda, puede utilizar el método RefreshDatabaseWindow para mostrar el nombre del nuevo formulario en la ficha Formularios de la ventana Base de datos inmediatamente después de guardarlo.


Ejemplo del método RefreshDatabaseWindow

El ejemplo siguiente crea un nuevo formulario, lo guarda y actualiza la ventana Base de datos:

Sub CrearFormularioYActualizar()

Dim frm As Form

Set frm = CreateForm

DoCmd.Save , "FormularioNuevo"

RefreshDatabaseWindow

End Sub


Método ReplaceLine

El método ReplaceLine reemplaza una línea especificada en un módulo estándar o un módulo de clase.

Sintaxis

objeto.ReplaceLine línea, cadena

El método ReplaceLine tiene los siguientes argumentos.

Argumento	Descripción
objeto	Un objeto Module.
línea	Un valor Largo que especifica el número de la línea que se va a reemplazar.
Cadena	El texto que va a reemplazar a la línea existente.
Comentarios

Las líneas de un módulo se numeran a partir de uno. Para determinar el número de líneas de un módulo, utilice la propiedad CountOfLines.


Método RunCommand

El método RunCommand ejecuta un comando de menú incorporado de barra de herramientas.

Sintaxis

[objeto.]RunCommand comando

El método RunCommand tiene los siguientes argumentos.

Argumento	Descripción
objeto	Opcional. El objeto Application o el objeto DoCmd.
comando	Una constante intrínseca que especifica qué comando de menú o de barra de herramientas se va a ejecutar.
Comentarios

Cada comando de menú y de barra de herramientas de Microsoft Access tiene una constante asociada que puede utilizar con el método RunCommand para ejecutar ese comando desde Visual Basic.

Para ver una lista de posibles constantes del argumento comando, vea constantes del método RunCommand. También puede ver estas constantes en el Examinador de objetos. Seleccione Access en el cuadro Proyecto/Biblioteca, y a continuación seleccione AcCommand en la lista Classes. La constante aparece en la lista Miembros de.

No puede usar el método RunCommand para ejecutar un comando en un menú o barra de herramientas personalizada. Sólo puede usarlo con menús y barras de herramientas incorporadas.

El método RunCommand reemplaza al método DoMenuItem del objeto DoCmd.


Ejemplo del método RunCommand

El ejemplo siguiente utiliza el método RunCommand para abrir el cuadro de diálogo Opciones (disponible al hacer clic en Opciones en el menú Herramientas):

Function AbrirCuadroDiálogoOpciones() As Boolean

On Error GoTo Error_AbrirCuadroDiálogoOpciones

DoCmd.RunCommand acCmdOptions

AbrirCuadroDiálogoOpciones = True

Exit_AbrirCuadroDiálogoOpciones:

Exit Function

Error_AbrirCuadroDiálogoOpciones:

MsgBox Err & ": " & Err.Description

AbrirCuadroDiálogoOpciones = False

Resume Exit_AbrirCuadroDiálogoOpciones

End Function


Función GUIDFromString

La función GUIDFromString convierte una cadena a un GUID, que es una matriz de tipo Byte.

Sintaxis

GUIDFromString(expresióncadena)

La función GUIDFromString tiene el argumento siguiente.

Argumento	Descripción
expresióncadena	Una expresión de cadena que da como resultado un GUID en forma de cadena.
Comentarios

La máquina de la base de datos Microsoft Jet almacena GUID como matrices de tipo Byte. No obstante, Microsoft Access no puede devolver datos Byte de un control de un formulario o un informe. Para devolver el valor de un GUID desde un control, debe convertirlo a una cadena. Para convertir un GUID a una cadena, utilice la función StringFromGUID. Para convertir una cadena a un GUID, utilice la función GUIDFromString.


Ejemplo de la función GUIDFromString

El ejemplo siguiente utiliza la función GUIDFromString para convertir una cadena a un GUID. La cadena es un GUID almacenado en forma de cadena en una tabla Empleados replicada. El campo, s_GUID, es un campo oculto agregado a cada tabla de una base de datos replicada.

Sub ComprobarTipoGUID()

Dim dbs As Database, rst As Recordset

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("Empleados")

Debug.Print rst!s_GUID

Debug.Print TypeName(rst!s_GUID)

Debug.Print TypeName(GuidFromString(rst!s_GUID))

End Sub


Función StringFromGUID

La función StringFromGUID convierte un GUID, que es una matriz de tipo Byte, a una cadena.

Sintaxis

StringFromGUID(guid)

La función StringFromGUID tiene el siguiente argumento.

Argumento	Descripción
guid	Una matriz de datos Byte que se utiliza para identificar una aplicación, un componente o un elemento de datos de forma exclusiva para el sistema operativo.
Comentarios

La máquina de la base de datos Microsoft Jet almacena GUID como matrices de tipo Byte. No obstante, Microsoft Access no puede devolver datos Byte desde un control de un formulario o un informe. Para devolver el valor de un GUID desde un control, debe convertirlo a una cadena. Para convertir un GUID a una cadena, utilice la función StringFromGUID. Para convertir de nuevo una cadena a un GUID, utilice la función GUIDFromString.

Por ejemplo, es posible que tenga que hacer referencia a un campo que contiene un GUID al utilizar la replicación de bases de datos. Para devolver el valor de un control de un formulario dependiente de un campo que contiene un GUID, utilice la función StringFromGUID para convertir el GUID a una cadena.

Observe que para hacer depender un control del campo s_GUID de una tabla replicada, debe elegir Opciones en el menú Herramientas y seleccionar la casilla de verificación Objetos de sistema en la ficha Ver del cuadro de diálogo Opciones.


Ejemplo de la función StringFromGUID

El ejemplo siguiente devuelve el valor del control s_GUID de un formulario Empleados en forma de cadena y lo asigna a una variable de cadena. El control s_GUID depende del campo s_GUID, uno de los campos del sistema agregados a cada tabla replicada de una base de datos replicada.

Sub ValorCadenaDeGUID()

Dim ctl As Control, cadGUID As String

Set ctl = Forms!Empleados!s_GUID

Debug.Print TypeName(ctl.Value)

cadGUID = StringFromGUID(ctl.Value)

Debug.Print TypeName(cadGUID)

End Sub


Método Add (colección Páginas (Pages))

El método Add agrega un objeto Página (Page) nuevo a la colección Páginas (Pages) de un control ficha.

Sintaxis

objeto.Add [antes]

El método Add tiene los siguientes argumentos.

Argumento	Descripción
objeto	La colección Páginas (Pages) de un control ficha.
antes	Un entero que especifica el índice del objeto Página (Page) antes del cual debe agregarse el nuevo objeto Página (Page). El índice del objeto Página (Page) corresponde al valor de la propiedad ÍndiceDePáginas (PageIndex) de ese objeto Página (Page). Si omite este argumento, el nuevo objeto Página (Page) se agrega al final de la colección.
Comentarios

El primer objeto Página (Page) de la colección Páginas (Pages) corresponde a la página situada más a la izquierda del control ficha y tiene un índice de 0. El segundo objeto Página (Page) está situado inmediatamente a la derecha de la primera página y tiene un índice de 1, y así sucesivamente para todos los objetos Página (Page) del control ficha.

Si especifica 0 para el argumento antes, el nuevo objeto Página (Page) se agrega antes del primer objeto Página (Page) de la colección Páginas (Pages). El nuevo objeto Página (Page) se convierte entonces en el primer objeto Página (Page) de la colección, con un índice de 0.

Puede agregar un objeto Página (Page) a la colección Páginas (Pages) de un control ficha sólo cuando el formulario se encuentra en la vista Diseño.


Ejemplo de los métodos Add y Remove (colección Páginas (Pages))

El ejemplo siguiente agrega una página a un control ficha de un formulario que se encuentra en la vista Diseño. Para probar este ejemplo, cree un nuevo formulario denominado Formulario1 con un control ficha denominado ControlFicha0. Pegue el código siguiente en un módulo estándar y ejecútelo:

Function AgregarPágina() As Boolean

Dim frm As Form

Dim tbc As TabControl, pge As Page

On Error GoTo Error_AgregarPágina

Set frm = Forms!Formulario1

Set tbc = frm!ControlFicha0

tbc.Pages.Add

AgregarPágina = True

Exit_AgregarPágina:

Exit Function

Error_AgregarPágina:

MsgBox Err & ": " & Err.Description

AgregarPágina = False

Resume Exit_AgregarPágina

End Function

El ejemplo siguiente quita páginas del control ficha.

Function QuitarPágina() As Boolean

Dim frm As Form

Dim tbc As TabControl, pge As Page

On Error GoTo Error_QuitarPágina

Set frm = Forms!Formulario1

Set tbc = frm!ControlFicha0

tbc.Pages.Remove

QuitarPágina = True

Exit_QuitarPágina:

Exit Function

Error_QuitarPágina:

MsgBox Err & ": " & Err.Description

QuitarPágina = False

Resume Exit_QuitarPágina

End Function


Método Remove (colección Páginas (Pages))

El método Remove quita un objeto Página (Page) de la colección Páginas (Pages) de un control ficha.

Sintaxis

objeto.Remove [elemento]

El método Remove tiene los siguientes argumentos.

Argumento	Descripción
objeto	Una expresión de cadena que da como resultado la colección Páginas (Pages) de un control ficha.
elemento	Un valor entero que especifica el índice del objeto Página (Page) que se va a quitar. El índice del objeto Página (Page) corresponde al valor de la propiedad ÍndiceDePáginas (PageIndex) de ese objeto Página (Page). Si omite este argumento, se quita el último objeto Página (Page) de la colección.
Comentarios

La colección Páginas (Pages) se numera a partir de cero. La página situada más a la izquierda en el control ficha tiene un índice de 0, la página situada inmediatamente a la derecha de la página situada más a la izquierda tiene un índice de 1, etc.

Puede quitar un objeto Página (Page) de la colección Páginas (Pages) de un control ficha sólo cuando el formulario se encuentra en la vista Diseño.


Método Remove (colección References)

El método Remove quita un objeto Reference de la colección References.

Sintaxis

objeto.Remove referencia

El método Remove tiene los siguientes argumentos.

Argumento	Descripción
objeto	Una expresión de cadena que da como resultado la colección References.
referencia	El objeto Reference que representa la referencia que desea quitar.
Comentarios

Para determinar el nombre del objeto Reference que desea quitar, active la casilla de verificación Proyecto/Biblioteca del Examinador de objetos. Aquí aparecen los nombres de todas las referencias que están establecidas actualmente. Estos nombres corresponden al valor de la propiedad Nombre (Name) de un objeto Reference.


Ejemplo del método Remove (colección References)

La primera de las dos funciones siguientes agrega a la colección References una referencia al control Calendario. La segunda función quita la referencia al control Calendario.

Function AgregarReferencia() As Boolean

Dim ref As Reference, cadArchivo As String

On Error GoTo Error_AgregarReferencia

cadArchivo = "C:\Windows\System\Mscal.ocx"

' Crear referencia al control Calendario.

Set ref = References.AddFromFile(cadArchivo)

AgregarReferencia = True

Exit_AgregarReferencia:

Exit Function

Error_AgregarReferencia:

MsgBox Err & ": " & Err.Description

AgregarReferencia = False

Resume Exit_AgregarReferencia

End Function

Function QuitarReferencia() As Boolean

Dim ref As Reference

On Error GoTo Error_QuitarReferencia

Set ref = References!MSACAL

' Quitar referencia al control Calendario.

References.Remove ref

QuitarReferencia = True

Exit_QuitarReferencia:

Exit Function

Error_QuitarReferencia:

MsgBox Err & ": " & Err.Description

QuitarReferencia = False

Resume Exit_QuitarReferencia

End Function


Objeto DoCmd

Se pueden utilizar los métodos del objeto DoCmd para ejecutar las acciones de Microsoft Access desde Visual Basic. Una acción realiza tareas como por ejemplo cerrar ventanas, abrir formularios y establecer el valor de los controles. Por ejemplo, se puede utilizar el método OpenForm del objeto DoCmd para abrir un formulario o utilizar el método Hourglass para cambiar el puntero del mouse a un icono de reloj de arena.

Nota   El objeto DoCmd reemplaza a la instrucción DoCmd de las versiones 1.x y 2.0 de Microsoft Access. La acciones que se usaban como argumentos de la instrucción DoCmd, ahora son métodos del objeto DoCmd. Por ejemplo, en Microsoft Access 2.0, podría haber usado el código DoCmd OpenForm "Pedidos" para abrir un formulario en Access Basic. En Microsoft Access 97, usaría la siguiente sintaxis:

DoCmd.OpenForm "Pedidos"

Sintaxis

[aplicación].DoCmd.método [arg1, arg2, ...]

El objeto DoCmd tiene los siguientes argumentos.

Argumento	Descripción
aplicación	Opcional. El objeto Application.
Método	Uno de los métodos permitidos por este objeto.
arg1, arg2, ...	Los argumentos para el método seleccionado. Estos argumentos son los mismos que los argumentos de acción para la acción correspondiente.
Comentarios

La mayoría de los métodos del objeto DoCmd tienen argumentos — algunos son obligatorios, mientras que otros son opcionales. Si se omiten los argumentos opcionales, los argumentos asumen los valores predeterminados para el método particular. Por ejemplo, el método OpenForm utiliza siete argumentos, aunque sólo el primer argumento, nombreformulario, es obligatorio. El siguiente ejemplo muestra cómo se puede abrir el formulario Empleados en la base de datos activa. Sólo se incluyen los empleados con el título Representante de ventas.

DoCmd.OpenForm "Empleados", , ,"[Título] = 'Representante de ventas'"

El objeto DoCmd no permite los métodos correspondientes a las siguientes acciones:

•	AgregarMenú (AddMenu)

•	CuadroMsj (MsgBox). Utilice la función CuadroMsj (MsgBox).

•	EjecutarAplicación (RunApp). Utilice la función Ejecutar (Shell) para ejecutar otra aplicación.

•	EjecutarCódigo (RunCode). Ejecute la función directamente en Visual Basic.

•	EnviarTeclas (SendKeys). Utilice la instrucción SendKeys.

•	EstablecerValor (SetValue). Establezca el valor directamente en Visual Basic.

•	DetenerTodasMacros (StopAllMacros)

•	DetenerMacro (StopMacro)

Para obtener más información sobre la acción de Microsoft Access que se corresponda con un método DoCmd, busque en el índice de la Ayuda el nombre de la acción.


Ejemplo del objeto DoCmd

El siguiente ejemplo abre un formulario en la vista Formulario y se mueve a un nuevo registro.

Sub MostrarNuevoRegistro()

DoCmd.OpenForm "Empleados", acNormal

DoCmd.GoToRecord , , acNewRec

End Sub


Método OpenCurrentDatabase

Se puede utilizar el método OpenCurrentDatabase para abrir una base de datos existente como la base de datos activa. Se puede utilizar este método para abrir una base de datos desde otra aplicación que esté controlando Microsoft Access mediante la automatización OLE. Por ejemplo, se puede utilizar el método OpenCurrentDatabase desde Microsoft Excel para abrir la base de datos de ejemplo Neptuno en la ventana Microsoft Access.

Sintaxis

aplicación.OpenCurrentDatabase nombrebd[, exclusivo]

El método OpenCurrentDatabase tiene los siguientes argumentos.

Argumento	Descripción
aplicación	El objeto Application.
nombrebd	Una expresión de cadena que sea el nombre de un archivo de base de datos existente, incluyendo el nombre de la ruta de acceso y la extensión del nombre de archivo. Si la red lo permite, se puede especificar también una ruta de acceso de la red de la siguiente forma: \\Server\Share\Carpeta\NombreArchivo.mdb
exclusivo	Opcional. Un valor Booleano que especifica si se desea abrir la base de datos en modo exclusivo. De forma predeterminada, la base de datos se abre en modo compartido.
Comentarios

El método OpenCurrentDatabase permite abrir una base de datos Microsoft Access desde otra aplicación mediante la automatización OLE. Una vez que haya creado una instancia de Microsoft Access desde otra aplicación, se debe crear también una nueva base de datos o especificar que se abra una base de datos en particular. Esta base de datos se abre en la ventana Microsoft Access.

Si ya se ha abierto una base de datos y se desea abrir otra base de datos en la ventana Microsoft Access, se puede utilizar el método CloseCurrentDatabase para cerrar la primera base de datos antes de abrir la otra.

Establezca a Verdadero (True) (–1) el argumento exclusivo para abrir la base de datos en modo exclusivo. Si se omite este argumento, la base de datos se abrirá en modo compartido.

Nota   No confunda el método OpenCurrentDatabase con el método DAO OpenDatabase. El método OpenCurrentDatabase abre una base de datos en la ventana Microsoft Access. El método DAO OpenDatabase devuelve una variable Objeto de base de datos que representa a una base de datos en particular, aunque en realidad no abre esa base de datos en la ventana Microsoft Access.


Ejemplo del método OpenCurrentDatabase

El siguiente ejemplo abre una base de datos Microsoft Access desde otra aplicación mediante la automatización OLE y luego abre un formulario en esa base de datos.

Se puede introducir este código en un módulo Visual Basic en cualquier aplicación que pueda actuar como un Controlador de automatización OLE. Por ejemplo, podría ejecutar el siguiente código desde Microsoft Excel, Microsoft Visual Basic o incluso Microsoft Access.

Cuando la variable que apunta al objeto Application se sale de alcance, se cierra también la instancia de Microsoft Access que representa. Por tanto, esta variable se debería declarar al nivel del módulo.

' Incluya lo siguiente en la sección Declaraciones del módulo.

Dim appAccess As Access Application

Sub MostrarFormulario()

Const ConCadRutaEjemplos = "C:\Archivos de" _

& "programa\MSOffice\Access\Ejemplos\"

Dim cadDB As String

' Inicializar la cadena a la ruta de la base de datos.

cadDB = ConCadRutaEjemplos & "Neptuno.mdb"

' Crear una nueva instancia de Microsoft Access.

Set appAccess = CreateObject("Access.Application.8")

' Abrir la base de datos en ventana Microsoft Access.

appAccess.OpenCurrentDatabase cadDB

' Abrir formulario Pedidos.

appAccess.DoCmd.OpenForm "Pedidos"

End Sub

Nota   Desde algunas aplicaciones, como por ejemplo Microsoft Visual Basic, se puede incluir la palabra clave New cuando se declara una variable del objeto Application. Esta palabra clave crea automáticamente una nueva instancia de Microsoft Access, sin necesidad de que se utilice la función CreateObject. Compruebe la documentación de su aplicación para determinar si permite esta sintaxis.


Método NewCurrentDatabase

Se puede utilizar el método NewCurrentDatabase para crear una nueva base de datos en la ventana Microsoft Access. Puede utilizar este método para crear una nueva base de datos desde otra aplicación que esté controlando Microsoft Access mediante la automatización OLE. Por ejemplo, se puede utilizar el método NewCurrentDatabase desde Microsoft Excel para crear una nueva base de datos en la ventana Microsoft Access.

Sintaxis

aplicación.NewCurrentDatabase nombrebd

El método NewCurrentDatabase tiene los siguientes argumentos.

Argumento	Descripción
aplicación	El objeto Application.
nombrebd	Una expresión de cadena que sea el nombre de un nuevo archivo de base de datos, incluyendo el nombre de la ruta de acceso y la extensión del nombre de archivo. Si la red lo permite, puede especificar una ruta de acceso de la red de la siguiente forma: \\Server\Share\Directorio\Nombrearchivo.mdb
Comentarios

El método NewCurrentDatabase permite crear una nueva base de datos Microsoft Access desde otra aplicación mediante la automatización OLE. Una vez que haya creado una instancia de Microsoft Access desde otra aplicación, debe crear también una nueva base de datos. Esta base de datos se abre en la ventana Microsoft Access.

Si la base de datos identificada por nombrebd ya existe, se producirá un error.

La nueva base de datos se abre bajo la Cuenta de usuario del administrador.


Ejemplo del método NewCurrentDatabase

El siguiente ejemplo crea una nueva base de datos de Microsoft Access desde otra aplicación mediante la automatización OLE y luego crea una nueva tabla en esa base de datos.

Puede introducir este código en un módulo Visual Basic en cualquier aplicación que pueda actuar como un Controlador de automatización OLE. Por ejemplo, podría ejecutar el siguiente código desde Microsoft Excel, Microsoft Visual Basic o incluso Microsoft Access.

Cuando la variable que apunta al objeto Application se sale de alcance, se cierra también la instancia de Microsoft Access que representa. Por tanto, esta variable se debería declarar al nivel del módulo.

' Incluya lo siguiente en la sección Declaraciones del módulo.

Dim appAccess As Access.Application

Sub NuevaBaseDatosAccess()

Dim dbs As Database, tdf As TableDef, fld As Field

Dim cadDB As String

' Inicializar cadena a ruta de acceso de base de datos.

cadDB = "C:\Mis documentos\Nuevabd.mdb"

' Crear nueva instancia de Microsoft Access.

Set appAccess = CreateObject("Access.Application.8")

' Abrir base de datos en ventana Microsoft Access.

appAccess.NewCurrentDatabase cadDB

' Obtener variable objeto de la base de datos.

Set dbs = appAccess.CurrentDb

' Crear nueva tabla.

Set tdf = dbs.CreateTableDef("Contactos")

' Crear campo en la nueva tabla.

Set fld = tdf.CreateField("NombreCompañía", dbText, 40)

' Agregar objetos Field y TableDef.

tdf.Fields.Append fld

dbs.TableDefs.Append tdf

Set appAccess = Nothing

End Sub

Nota   Desde algunas aplicaciones, como por ejemplo Microsoft Visual Basic, se puede incluir la palabra clave New cuando se declara una variable del objeto Application. Esta palabra clave crea automáticamente una nueva instancia de Microsoft Access, sin necesidad de que se utilice la función CreateObject. Compruebe la documentación de su aplicación para determinar si permite esta sintaxis.


Método Run

Se puede utilizar el método Run para llevar a cabo un procedimiento especificado tipo Function o Sub de Microsoft Access o definido por el usuario. Este método es útil cuando se está controlando Microsoft Access desde otra aplicación mediante Automatización, también llamada Automatización OLE. Por ejemplo, puede utilizar el método Run desde un componente ActiveX para realizar un procedimiento Sub que esté definido dentro de una base de datos Microsoft Access.

Sintaxis

aplicación.Run procedimiento[, arg1, arg2, ..., arg30]

El método Run tiene los siguientes argumentos.

Argumento	Descripción
aplicación	El objeto Application.
procedimiento	El nombre del procedimiento Function o Sub a ser ejecutado. Si está llamando a un procedimiento de otra base de datos utilice el nombre del proyecto y el nombre del procedimiento separado por un punto en el formulario: "nombreproyecto.nombreprocedimiento" Si ejecuta código de Visual Basic que contiene el método Run en una base de datos de biblioteca, Microsoft Access busca el primer procedimiento en la base de datos de biblioteca, y luego en la base de datos activa.
arg1, arg2, ...	Opcional. Los argumentos para el procedimiento Function o Sub especificado. Se pueden suministrar un máximo de treinta argumentos.
Comentarios

Se puede establecer una referencia a la biblioteca de tipos de Microsoft Access desde cualquier otro Controlador de automatización OLE y usar los objetos, métodos y propiedades definidos en esa biblioteca en su propio código. Sin embargo, no se puede establecer una referencia a una base de datos individual de Microsoft Access desde cualquier aplicación que no sea Microsoft Access. El método Run ofrece una forma de llamar a un procedimiento que haya definido en una base de datos Microsoft Access desde otra aplicación.

Por ejemplo, suponga que se haya definido un procedimiento llamado NewForm en una base de datos llamada WizCode.mdb. El procedimiento NewForm recibe un argumento de tipo cadena. Desde Visual Basic se puede llamar a NewForm de la siguiente forma.

Dim appAccess As New Access.Application

appAccess.OpenCurrentDatabase ("C:\Mis documentos\WizCode.mdb")

appAccess.Run "WizCode.NewForm", "Alguna cadena ", 10

Si puede haber otro procedimiento con el mismo nombre en una base de datos diferente, cualifique el argumento procedimiento, como se muestra en el ejemplo precedente, con el nombre de la base de datos en la que reside el procedimiento deseado.

También se puede utilizar el método Run para llamar a un procedimiento en una base de datos referenciada de Microsoft Access desde otra base de datos.

Microsoft Access ignora cualquier valor devuelto por un procedimiento llamado por el método Run.


Ejemplo del método Run

El siguiente ejemplo ejecuta un procedimiento Sub, definido por el usuario en un módulo en una base de datos Microsoft Access, desde otra aplicación que actúa como un Controlador de automatización OLE.

Para probar este ejemplo, hay que crear una nueva base de datos llamada WizCode.mdb y abrir un nuevo módulo en esa base de datos. Introduzca el siguiente código, guarde el módulo y cierre la base de datos.

Sub Saludos(cadNombre As String)

CuadroMsj("Hola, " & cadNombre)

End Sub

Una vez que haya completado este paso, ejecute el siguiente código desde Microsoft Excel o Microsoft Visual Basic. Asegúrese de que haya adjuntado una referencia a la Biblioteca de tipos de Microsoft Access haciendo clic en Referencias del menú Herramientas y seleccionando Biblioteca de objetos de Microsoft Access 8.0 en el cuadro de diálogo Referencias.

' Incluir en la sección Declaraciones del módulo.

Dim appAccess As Access.Application

Sub EjecutarSubDeAccess()

' Crear una instancia del objeto Application de Access.

Set appAccess = CreateObject("Access.Application.8")

' Abrir base de datos WizCode en ventana Microsoft Access.

appAccess.OpenCurrentDatabase

("C:\Mis documentos\WizCode.mdb")

' Ejecutar procedimiento Sub.

appAccess. Run "Saludo", "Juan"

Set appAccess = Nothing

End Sub


Método Dropdown

Se puede utilizar el método Dropdown para forzar el despliegue de la lista en el cuadro combinado especificado. Por ejemplo, se puede utilizar este método para provocar el despliegue de un cuadro combinado que enumera los códigos de suministradores cuando el control del código del suministrador recibe el enfoque durante la entrada de datos.

Sintaxis

cuadrocombinado.Dropdown

El método Dropdown tiene el siguiente argumento.

Argumento	Descripción
cuadrocombinado	Un control de cuadro combinado en un formulario.
Comentarios

Si el control del cuadro combinado especificado no tiene el enfoque, se producirá un error. La utilización de este método es lo mismo que presionar la tecla F4 cuando el control tiene el enfoque.


Ejemplo del método Dropdown

El siguiente ejemplo muestra cómo se puede utilizar el método Dropdown dentro del procedimiento de evento GotFocus para forzar el despliegue de un cuadro combinado llamado IdSuministrador cuando recibe el enfoque.

Private Sub IdSuministrador_RecibirEnfoque()

Me! IdSuministrador.Dropdown

End Sub


Método Undo

Se puede utilizar el método Undo para restablecer un control o formulario cuando se ha cambiado su valor. Por ejemplo, se puede utilizar el método Undo para borrar un cambio a un registro de formulario que contenga una entrada no válida.

Sintaxis

objeto.Undo

El método Undo tiene el siguiente argumento.

Argumento	Descripción
objeto	Un objeto Formulario (Form) o un objeto Control que representa un control dependiente de un formulario.
Comentarios

Si el método Undo se aplica a un formulario, se perderán todos los cambios al registro activo. Si el método Undo se aplica a un control, sólo se verá afectado el propio control.

El método Undo debe ser aplicado antes de que se actualice el formulario o control. Puede que desee incluir este método en un evento BeforeUpdate del formulario o en un evento Change de un control.

El método Undo ofrece una alternativa a la utilización de la instrucción SendKeys para enviar el valor de la tecla ESC en un procedimiento de evento.


Ejemplo del método Undo

El siguiente ejemplo muestra cómo se puede utilizar el método Undo dentro de un procedimiento de evento Change de control para forzar que se restablezca el valor original de un campo llamado Apellido, si es que ha sido cambiado.

Private Sub Cambio_Apellido ()

Me!Apellido.Undo

End Sub

El siguiente ejemplo utiliza el método Undo para restablecer todos los cambios a un formulario antes de que el formulario sea actualizado.

Private Sub AntesDeActualizar_Formulario (Cancel As Integer)

Me.Undo

End Sub


Colección ItemsSelected

La colección ItemsSelected ofrece una forma de tener acceso a los datos en las filas seleccionadas de un cuadro de lista.

Comentarios

La colección ItemsSelected se diferencia de otras colecciones en que es una colección Variants en lugar de objetos. Cada Variant es un índice entero que hace referencia a una fila seleccionada de un cuadro de lista o cuadro combinado.

Utilice la colección ItemsSelected en conjunción con la propiedad Columna (Column) o el método ItemData para recuperar datos desde las filas seleccionadas en un cuadro de lista o cuadro combinado. Se puede listar la colección ItemsSelected utilizando la instrucción For Each...Next.

Por ejemplo, si tiene un cuadro de lista Empleados en un formulario, se puede listar la colección ItemsSelected y utilizar el método ItemData del control para devolver el valor de la columna dependiente para cada fila seleccionada en el cuadro de lista.

Sugerencia   Para activar la selección múltiple de filas en un cuadro de lista, establezca la propiedad SelecciónMúltiple (MultiSelect) del control a Simple o Extendida.

La colección ItemsSelected no tiene métodos y sólo tiene una propiedad, la propiedad Contar (Count).


Ejemplo de la colección ItemsSelected

El siguiente ejemplo imprime el valor de la columna dependiente para cada fila seleccionada en un cuadro de lista Nombres en un formulario Contactos. Para probar este ejemplo, hay que crear el cuadro de lista y establecer su propiedad ColumnaDependiente (BoundColumn) como se desee y su propiedad SelecciónMúltiple (MultiSelect) a Simple o Extendido. Cambie a la vista Formulario, seleccione varias filas en el cuadro de lista y ejecute el siguiente código.

Sub DatosDependientes ()

Dim frm As Formulario, ctl As Control

Dim varItm As Variant

Set frm = Forms!Contactos

Set ctl = frm!Nombres

For Each varItm In ctl.ItemsSelected

Debug.Print ctl.ItemData(varItm)

Next varItm

End Sub

El siguiente ejemplo utiliza el mismo control de cuadro de lista, pero imprime los valores de cada columna para cada fila seleccionada en el cuadro de lista, en lugar de sólo los valores en la columna dependiente.

Sub TodosLosDatosSeleccionados ()

Dim frm As Formulario, ctl As Control

Dim varItm As Variant, entI As Integer

Set frm = Forms!Contactos

Set ctl = frm!Nombres

For Each varItm In ctl.ItemsSelected

For entI = 0 To ctl.ContadorColumna - 1

Debug.Print ctl.Columna(entI, varItm)

Next entI

Debug.Print

Next varItm

End Sub


Objeto Application

El objeto Application hace referencia a la aplicación de Microsoft Access activa.

Comentarios

El objeto Application contiene todas las colecciones y los objetos de Microsoft Access incluida la colección Formularios (Forms), la colección Informes (Reports), la colección Modules, la colección References, el objeto Pantalla (Screen) y el objeto DoCmd.

Puede utilizar el objeto Application para aplicar métodos o valores de propiedades a toda la aplicación de Microsoft Access. Por ejemplo, puede emplear el método SetOption del objeto Application para establecer las opciones de la base de datos desde Visual Basic. El ejemplo siguiente muestra cómo puede establecer la casilla de verificación Barra de estado bajo Mostrar en la ficha Ver del cuadro de diálogo Opciones.

Application.SetOption "Barra de estado", True

Microsoft Access es un componente ActiveX que admite la Automatización, que anteriormente se denominaba Automatización OLE. Es posible manipular los objetos de Microsoft Access desde otra aplicación que también admita la Automatización. Para ello, utilice el objeto Application.

Por ejemplo, Microsoft Visual Basic es un componente ActiveX. Puede abrir una base de datos de Microsoft Access desde Visual Basic y trabajar con sus objetos. Desde Visual Basic, cree primero una referencia a la biblioteca de objetos de Microsoft Access 8.0. A continuación, cree una nueva instancia de la clase Application y apunte a ella una variable de objeto, como muestra este ejemplo:

Dim aplicAccess As New Access.Application

Desde aplicaciones que no admiten la palabra clave New, puede crear una nueva instancia de la clase Application mediante la función CreateObject:

Dim aplicAccess As Object

Set aplicAccess = CreateObject("Access.Application.8")

Una vez creada una nueva instancia de la clase Application, puede abrir una base de datos o crear una base de datos nueva, ya sea mediante el método OpenCurrentDatabase o mediante el método NewCurrentDatabase. A continuación, puede establecer las propiedades del objeto Application y llamar a sus métodos. Cuando se retorna una referencia al objeto DBEngine mediante la propiedad DBEngine del objeto Application, puede tener acceso a todas las colecciones y a los objetos DAO mediante esta referencia.

También puede manipular otros objetos de Microsoft Access mediante el objeto Application. Por ejemplo, mediante el método OpenForm del objeto DoCmd de Microsoft Access, puede abrir un formulario de Microsoft Access desde Microsoft Excel:

aplicAccess.DoCmd.OpenForm "Pedidos"

Para obtener más información acerca de cómo crear una referencia y controlar objetos mediante la Automatización, consulte la documentación de la aplicación que actúa como componente ActiveX.


Ejemplo del objeto Application

Este ejemplo muestra algunos de los valores de las propiedades actuales del objeto Application, establece una opción y, a continuación, sale de la aplicación guardando todos los objetos:

Sub InformaciónAplicación()

' Mostrar el nombre y el tipo del objeto actual.

Debug.Print Application.CurrentObjectName

Debug.Print Application.CurrentObjectType

' Establecer la opción Mostrar objetos ocultos bajo Mostrar en la ficha Ver del cuadro de diálogo Opciones.

Application.SetOption "Mostrar objetos ocultos", True

' Salir de Microsoft Access y guardar todos los objetos.

Application.Quit acSaveYes

End Sub

El ejemplo siguiente muestra cómo utilizar Microsoft Access como un componente ActiveX. Desde Microsoft Excel, Visual Basic u otra aplicación que actúe como un componente ActiveX, cree una referencia a Microsoft Access eligiendo Referencias en el menú Herramientas de la ventana Módulo. Active la casilla de verificación situada junto a Microsoft Access 8.0 Object Library. A continuación, introduzca el código siguiente en un módulo de Visual Basic dentro de esa aplicación y llame al procedimiento TomarDatosAccess.

El ejemplo pasa un nombre de base de datos y un nombre de informe a un procedimiento que crea una nueva instancia de la clase Application, abre la base de datos e imprime el informe especificado.

' Declarar la variable de objeto en la sección Declaraciones de un módulo.

Dim aplicAccess As Access.Application

Sub TomarDatosAccess()

Dim cadBD As String

Dim cadNombreInforme As String

' Inicializar la cadena a la ruta de acceso de la base de datos.

cadBD = "C:\Archivos de programa\Microsoft Office\Office\Ejemplos\Neptuno.mdb"

' Inicializar la cadena al nombre del informe.

cadNombreInforme = "Catálogo"

ImprimirInformeAccess cadBD, cadNombreInforme

End Sub

Sub ImprimirInformeAccess(cadBD As String, cadNombreInforme As String)

' Devolver referencia al objeto Application de Microsoft Access.

Set aplicAccess = New Access.Application

' Abrir la base de datos en Microsoft Access.

aplicAccess.OpenCurrentDatabase cadBD

' Imprimir el informe.

aplicAccess.DoCmd.OpenReport cadNombreInforme

MsgBox "Haga clic en Aceptar cuando " & cadNombreInforme & _

" haya terminado de imprimirse"

aplicAccess.CloseCurrentDatabase

Set aplicAccess = Nothing

End Sub


Objeto Control

El objeto Control representa un control de un formulario, un informe o una sección dentro de otro control o adjunto a otro control. El siguiente diagrama muestra el objeto Control en relación a un objeto Formulario (Form) o un objeto Informe (Report).

Comentarios

Todos los controles de un formulario o un informe pertenecen a la colección Controles (Controls) de ese objeto Formulario (Form) o Informe (Report). Los controles que están dentro de una sección particular pertenecen a la colección Controles (Controls) de esa sección. Los controles que están dentro de un control ficha o de un control grupo de opciones pertenecen a la colección Controles (Controls) de ese control. Un control etiqueta que está adjunto a otro control pertenece a la colección Controles (Controls) de ese control.

Al hacer referencia a un objeto Control individual de la colección Controles (Controls), es posible hacer referencia a la colección Controles (Controls) tanto implícita como explícitamente.

' Hacer referencia implícita al control DatosNuevos de la colección Controles (Controls).

Me!DatosNuevos

' Utilizar si el nombre del control contiene espacios.

Me![Datos nuevos]

' Rendimiento ligeramente más lento.

Me("DatosNuevos")

' Hacer referencia a un control por su índice en la colección Controles (Controls).

Me(0)

' Hacer referencia a un control DatosNuevos mediante la colección Controles (Controls) del subformulario.

Me.ctlSubForm.Controls!DatosNuevos

' Hacer referencia explícitamente al control DatosNuevos de la colección Controles (Controls).

Me.Controls!DatosNuevos

Me.Controls("DatosNuevos")

Me.Controls(0)

Nota   Puede utilizar la palabra clave Me para representar un objeto Formulario (Form) o Informe (Report) dentro del código sólo si está haciendo referencia al formulario o el informe desde el código dentro del módulo de clase. Si hace referencia a un formulario o un informe desde un módulo estándar o un módulo de otro formulario o informe, debe utilizar la referencia completa al formulario o informe.

Cada objeto Control se representa por una constante intrínseca determinada. Por ejemplo, la constante intrínseca acTextBox está asociada a un control de cuadro de texto y acCommandButton está asociada a un botón de comando. Las constantes de los diversos controles de Microsoft Access se establecen en la propiedad ControlType del control.

Para determinar el tipo de un control existente, puede utilizar la propiedad ControlType. No obstante, no necesita conocer el tipo específico de un control para poder utilizarlo en el código. Simplemente, puede representarlo mediante una variable de tipo de datos Control.

Si conoce el tipo de datos del control al que se está refiriendo, y el control es un control incorporado de Microsoft Access, debe representarlo con una variable de un tipo específico. Por ejemplo, si sabe que un control en particular es un cuadro de texto, declare una variable de tipoTextBox para representarlo, como se muestra en el código siguiente.

Dim txt As TextBox

Set txt = Forms!Empleados!Apellido

Nota   Si un control es un control ActiveX, entonces debe declarar una variable del tipo Control para representarlo; no puede usar un tipo específico. Si no está seguro deI tipo de control al que va a apuntar la variable, declare la variable como de tipo Control.

El grupo de opciones puede contener otros controles dentro de su colección Controles (controls), incluyendo controles botón de opción, casilla de verificación, botón de alternar y etiqueta.

El control etiqueta contiene una colección Páginas (Pages), que es un tipo especial de colección Controles (Controls). La colección Páginas (Pages) contiene objetos Página (Page), que son controles. Cada objeto Página (Page) contiene a su vez una colección Controles (Controls), que contiene todos los controles de esa página.

Otros objetos Control tienen una colección Controles (Controls) que puede contener una etiqueta adjunta. Estos controles incluyen los controles cuadro de texto, grupo de opciones, botón de opción, botón de alternar, casilla de verificación, cuadro combinado, cuadro de lista, botón de comando, marco de objeto dependiente y marco de objeto independiente.


Ejemplo del objeto Control, colección Controles (Controls)

Este ejemplo enumera todos los controles de la colección Controles (Controls) de un formulario. El procedimiento se llama desde un módulo del formulario y se utiliza la palabra clave Me para pasar el objeto Formulario (Form) al procedimiento. El procedimiento establece determinadas propiedades si el control es un cuadro de texto.

' Llamar al procedimiento EstablecerPropiedadesCuadroTexto.

EstablecerPropiedadesCuadroTexto Me

Sub EstablecerPropiedadesCuadroTexto(frm As Form)

Dim ctl As Control

' Enumerar la colección Controles (Controls).

For Each ctl In frm.Controls

' Comprobar si el control es un cuadro de texto.

If ctl.ControlType = acTextBox Then

' Establecer las propiedades del control.

With ctl

.SetFocus

.Enabled = True

.Height = 400

.SpecialEffect = 0

End With

End If

Next ctl

End Sub


Objeto Formulario (Form)

Un objeto Formulario (Form) hace referencia a un formulario determinado de Microsoft Access.

Comentarios

Un objeto Formulario (Form) es un miembro de la colección Formularios (Forms), que es una colección de todos los formularios abiertos actualmente. Dentro de la colección Formularios (Forms), los formularios individuales se numeran a partir de cero. Puede hacer referencia a un objeto Formulario (Form) individual de la colección Formularios (Forms) haciendo referencia al formulario por su nombre o por su índice dentro de la colección. Si desea hacer referencia a un formulario específico de la colección Formularios (Forms), es más conveniente hacer referencia al formulario por su nombre, dado que el índice de la colección de un formulario puede cambiar. Si el nombre del formulario contiene espacios, debe encerrarlo entre corchetes ([ ]).

Sintaxis	Ejemplo
Forms!nombreformulario	Forms!FormularioPedidos
Forms![nombre formulario]	Forms![Formulario Pedidos]
Forms("nombreformulario")	Forms("FormularioPedidos")
Forms(índice)	Forms(0)
Cada objeto Formulario (Form) tiene una colección Controles (Controls), que contiene todos los controles del formulario. Puede hacer referencia a un control de un formulario haciendo referencia implícita o explícitamente a la colección Controles (Controls). El código será más rápido si hace referencia a la colección Controles (Controls) implícitamente. Los ejemplos siguientes muestran dos formas de hacer referencia a un control denominado DatosNuevos del formulario FormularioPedidos:

' Referencia implícita.

Forms!FormularioPedidos!DatosNuevos

' Referencia explícita.

Forms!FormularioPedidos.Controls!DatosNuevos

Los dos ejemplos siguientes muestran cómo puede hacer referencia a un control DatosNuevos de un subformulario ctlSubForm perteneciente al formulario FormularioPedidos:

Forms!FormularioPedidos.ctlSubForm.Form!Controls.DatosNuevos

Forms!FormularioPedidos.ctlSubForm!DatosNuevos


Colección Formularios (Forms)

La colección Formularios (Forms) contiene todos los formularios de una base de datos de Microsoft Access abiertos actualmente.

Comentarios

Utilice la colección Formularios (Forms) en Visual Basic o en una expresión para hacer referencia a los formularios que están abiertos actualmente. Por ejemplo, puede enumerar la colección Formularios (Forms) para establecer o averiguar los valores de las propiedades de determinados formularios de la colección.

Sugerencia   La instrucción For Each...Next es útil para enumerar una colección.

Puede hacer referencia a un objeto Formulario (Form) determinado de la colección Formularios (Forms) haciendo referencia al formulario por su nombre o por su índice dentro de la colección. Si desea hacer referencia a un formulario determinado de la colección Formularios (Forms), es más conveniente hacer referencia al formulario por su nombre, dado que el índice de la colección de un formulario puede cambiar.

La colección Formularios (Forms) se numera a partir de cero. Si desea hacer referencia a un formulario por su índice, el primer formulario abierto es Forms(0), el segundo formulario abierto es Forms(1), etc. Si ha abierto Formulario1 y, a continuación, ha abierto Formulario2, se hará referencia a Formulario2 en la colección Formularios (Forms) por su índice como Forms(1). Si a continuación cierra Formulario1, se hará referencia a Formulario2 en la colección Formularios (Forms) por su índice como Forms(0).

Nota   Para obtener una lista de todos los formularios de la base de datos, ya estén abiertos o cerrados, enumere la colección Documents del objeto Container del formulario. A continuación, puede utilizar la propiedad Nombre (Name) de cada objeto Document individual para averiguar el nombre de un formulario.

No es posible agregar ni eliminar un objeto Formulario (Form) desde la colección Formularios (Forms).


Ejemplo del objeto Formulario (Form), colección Formularios (Forms)

Este ejemplo crea un nuevo formulario y establece determinadas propiedades:

Sub FormularioNuevo()

Dim frm As Form

' Crear un formulario nuevo.

Set frm = CreateForm

' Establecer las propiedades del formulario.

With frm

.RecordSource = "Productos"

.Caption = "Formulario Productos"

.ScrollBars = 0

.NavigationButtons = True

End With

' Restaurar el formulario.

DoCmd.Restore

End Sub

El ejemplo siguiente enumera la colección Formularios (Forms) y muestra el nombre de cada formulario de la colección Formularios (Forms). A continuación, enumera la colección Controles (Controls) de cada formulario y muestra el nombre de cada control del formulario.

Sub TodosLosFormulariosAbiertos()

Dim frm As Form, ctl As Control

' Enumerar la colección Formularios (Forms).

For Each frm In Forms

' Mostrar el nombre del formulario.

Debug.Print frm.Name

' Enumerar la colección Controles (Controls) de cada formulario.

For Each ctl In frm.Controls

' Mostrar el nombre de cada control.

Debug.Print ">>>"; ctl.Name

Next ctl

Next frm

End Sub

Este ejemplo utiliza la colección Formularios (Forms) en una expresión. Si tiene un formulario denominado Pedidos con un control PaísEnvío, puede emplear la función SiInm (IIf) para averiguar un valor basado en el valor actual del control. Si el valor de PaísEnvío es Null, la expresión retorna una cadena de longitud cero; de lo contrario, retorna el contenido del campo. Escriba esta expresión en la propiedad Origen del control (ControlSource) de un cuadro de texto de un formulario:

= IIf(IsNull(Forms!Pedidos! PaísEnvío), "", Forms!Pedidos!PaísEnvío)


Objeto Informe (Report)

Un objeto Informe (Report) hace referencia a un informe determinado de Microsoft Access.

Comentarios

Un objeto Informe (Report) es un miembro de la colección Informes (Reports), que es una colección de todos los informes abiertos actualmente. Dentro de la colección Informes (Reports), los informes se numeran a partir de cero. Puede hacer referencia a un objeto Informe (Report) determinado de la colección Informes (Reports) tanto por su nombre como por su índice dentro de la colección. Si el nombre del informe incluye espacios, debe encerrarlo entre corchetes ([ ]).

Sintaxis	Ejemplo
Reports!nombreinforme	Reports!InformePedidos
Reports![nombre informe]	Reports![Informe Pedidos]
Reports("nombreinforme")	Reports("InformePedidos")
Reports(índice)	Reports(0)
Cada objeto Informe (Report) tiene una colección Controles (Controls), que contiene todos los controles del informe. Puede hacer referencia a un control de un informe haciendo referencia implícita o explícitamente a la colección Controles (Controls). El código será más rápido si hace referencia a la colección Controles (Controls) implícitamente. Los ejemplos siguientes muestran dos formas de hacer referencia a un control denominado DatosNuevos del informe InformePedidos.

' Referencia implícita.

Reports!InformePedidos!DatosNuevos

' Referencia explícita.

Reports!InformePedidos.Controls!DatosNuevos


Colección Informes (Reports)

La colección Informes (Reports) contiene todos los informes abiertos actualmente en una base de datos de Microsoft Access.

Comentarios

Puede utilizar la colección Informes (Reports) en Visual Basic o en una expresión para hacer referencia a los informes que estén abiertos actualmente. Por ejemplo, puede enumerar la colección Informes (Reports) para establecer o averiguar los valores de las propiedades de determinados informes de la colección.

Sugerencia   La instrucción For Each...Next es útil para enumerar una colección.

Puede hacer referencia a un objeto Informe (Report) determinado de la colección Informes (Reports) por su nombre o por su índice dentro de la colección.

La colección Informes (Reports) se numera a partir de cero. Si hace referencia a un informe por su índice, el primer informe es Reports(0), el segundo es Reports(1), etc. Si ha abierto Informe1 y a continuación ha abierto Informe2, se hará referencia a Informe2 en la colección Informes (Reports) por su índice como Reports(1). Si a continuación cierra Informe1, se hará referencia a Informe2 en la colección Informes (Reports) por su índice como Reports(0).

Nota   Para obtener una lista de todos los informes de la base de datos, ya estén abiertos o cerrados, enumere la colección Documents del objeto Container del informe. A continuación, puede utilizar la propiedad Nombre (Name) de cada objeto Document individual para averiguar el nombre de un informe.

No es posible agregar ni eliminar un objeto Informe (Report) desde la colección Informes (Reports).


Ejemplo del objeto Informe (Report), colección Informes (Reports)

Este ejemplo crea un informe nuevo y establece determinadas propiedades:

Sub InformeNuevo()

Dim rpt As Report

' Devolver una variable del tipo de datos Informe (Report) que apunta al nuevo objeto Informe (Report).

Set rpt = CreateReport

' Establecer las propiedades del informe nuevo.

With rpt

.RecordSource = "Productos"

.Caption = "Informe Productos"

End With

' Restaurar el informe nuevo.

DoCmd.Restore

End Sub

Este ejemplo enumera la colección Informes (Reports) y muestra el nombre de cada informe de la colección Informes (Reports). A continuación, enumera la colección Controles (Controls) de cada informe y muestra el nombre de cada control del informe.

Sub TodosInformesAbiertos()

Dim rpt As Report, ctl As Control

' Enumerar la colección Informes (Reports).

For Each rpt In Reports

' Mostrar el nombre del informe.

Debug.Print rpt.Name

' Enumerar la colección Controles (Controls) de cada informe.

For Each ctl In rpt.Controls

' Mostrar el nombre de cada control.

Debug.Print ">>>"; ctl.Name

Next ctl

Next rpt

End Sub


Objeto Pantalla (Screen)

El objeto Pantalla (Screen) hace referencia al formulario, informe o control determinado que tiene el enfoque actualmente.

Comentarios

Puede utilizar el objeto Pantalla (Screen) junto con sus propiedades para hacer referencia a un formulario, informe o control determinado que tenga el enfoque. Por ejemplo, puede emplear el objeto Pantalla (Screen) con la propiedad ActiveForm para hacer referencia al formulario de la ventana activa sin necesidad de conocer su nombre. Este ejemplo muestra el nombre del formulario de la ventana activa:

MsgBox Screen.ActiveForm.Name

Al hacer referencia al objeto Pantalla (Screen) no se activa un formulario, informe o control. Para activar un formulario, informe o control, debe utilizar el método SelectObject del objeto DoCmd.

Si hace referencia al objeto Pantalla (Screen) cuando no hay ningún formulario, informe o control activo, Microsoft Access retorna un error en tiempo de ejecución. Por ejemplo, si hay un módulo estándar en la ventana activa, el código del ejemplo anterior retornará un error.


Ejemplo del objeto Pantalla (Screen)

Este ejemplo utiliza el objeto Pantalla (Screen) para mostrar el nombre del formulario de la ventana activa y del control activo en ese formulario:

Sub ObjetosActivos()

Dim frm As Form, ctl As Control

' Retorna un objeto Formulario (Form) que representa al formulario activo.

Set frm = Screen.ActiveForm

MsgBox frm.Name & " es el formulario activo."

' Devuelve un objeto Control que representa al control activo.

Set ctl = Screen.ActiveControl

MsgBox ctl.Name & " es el control activo " _

& "de este formulario."

End Sub


Objeto Module

Un objeto Module hace referencia a un módulo estándar o a un módulo de clase.

Observaciones

Microsoft Access incluye módulos de clase que no están asociados con ningún objeto, y los módulos de formulario y los módulos de informe, que están asociados con un formulario o informe.

Para determinar desde el código si un objeto Module representa a un módulo estándar o a un módulo de clase, compruebe la propiedad Type del objeto Module.

La colección Modules contiene todos los objetos Module abiertos, sin importar su tipo. Los módulos de la colección Modules pueden estar compilados o sin compilar.

Para devolver una referencia a un objeto de módulo de clase o estándar determinado de la colección Modules, utilice cualquiera de las siguientes formas de sintaxis.

Sintaxis	Descripción
Modules!nombremódulo	El argumento nombremódulo es el nombre del objeto Module.
Modules("nombremódulo")	El argumento nombremódulo es el nombre del objeto Module.
Modules(índice)	El argumento índice es la posición numérica del objeto dentro de la colección.
El siguiente ejemplo devuelve una referencia a un objeto de módulo estándar y la asigna a una variable de objeto:

Dim mdl As Module

Set mdl = Modules![Funciones de utilidad]

Observe que los corchetes que rodean al nombre del objeto Module sólo son necesarios si el nombre del Module incluye espacios.

El siguiente ejemplo devuelve una referencia a un objeto Module de formulario y la asigna a una variable de objeto:

Dim mdl As Module

Set mdl = Modules!Form_Empleados

Para hacer referencia a un módulo de formulario o informe determinado, puede usar también la propiedad Module del objeto Formulario (Form) o Informe (Report):

Forms!nombreformulario.Module

El siguiente ejemplo devuelve también una referencia al objeto Module asociado con un formulario Empleados y la asigna a una variable de objeto:

Dim mdl As Module

Set mdl = Forms!Empleados.Module

Una vez haya devuelto una referencia a un objeto Module, puede establecer o leer sus propiedades y aplicar sus métodos.


Ejemplo del objeto Module, colección Modules

El siguiente ejemplo devuelve una referencia a un objeto Module de la colección Modules e imprime el número de líneas de código en el módulo:

Function LinesInModule(strModulename As String) As Long

Dim mdl As Module

On Error GoTo Error_LinesInModule

' Abrir módulo.

DoCmd.OpenModule strModulename

' Devolver referencia a objeto Módulo.

Set mdl = Modules(strModulename)

' Devolver número de líneas en módulo.

LinesInModule = mdl.CountOfLines

Exit_LinesInModule:

Exit Function

Error_LinesInModule:

MsgBox Err & ": " & Err.Description

' Si falla la función, devolver -1.

LinesInModule = -1

Resume Exit_LinesInModule

End Function


Colección Modules

La colección Modules contiene todos los módulos estándar y los módulos de clase abiertos en una base de datos Microsoft Access.

Observaciones

Puede enumerar a través de la colección Modules usando la instrucción For Each...Next. Para determinar si un objeto Module individual representa un módulo estándar o un módulo de clase, compruebe la propiedad Type del objeto Module.

Todos los módulos abiertos se incluyen en la colección Modules, tanto si están sin compilar, están compilados, están en modo de interrupción o contienen el código que se está ejecutando.

La colección Modules pertenece al objeto Application de Microsoft Access.

Los objetos Module individuales de la colección Modules están indexados empezando por cero.


Objeto Página (Page)

Un objeto Página (Page) corresponde a una página individual en un control de ficha.

Observaciones

Un objeto Página (Page) es un miembro de la colección Páginas (Pages) de un control de ficha.

Para devolver una referencia a un objeto Página (Page) determinado de la colección Página (Page), utilice cualquiera de las siguientes formas de sintaxis.

Sintaxis	Descripción
Pages!nombrepágina	El argumento nombrepágina es el nombre del objeto Página (Page).
Pages("nombrepágina")	El argumento nombrepágina es el nombre del objeto Página (Page).
Pages(índice)	El argumento índice es la posición numérica del objeto dentro de la colección.
Puede crear, mover, o eliminar objetos Página (Page) y establecer sus propiedades tanto en Visual Basic como en la vista Diseño del formulario. Para crear un nuevo objeto Página (Page) en Visual Basic, use el método Add de la colección Páginas (Pages). Para eliminar un objeto Página (Page), utilice el método Remove de la colección Páginas (Pages).

Para crear un nuevo objeto Página (Page) en la vista Diseño del formulario, haga clic con el botón secundario en el control de ficha y luego elija Insertar página en el menú contextual. También puede copiar una página existente y pegarla. Puede establecer las propiedades del nuevo objeto Página (Page) en la vista Diseño de formulario usando la hoja de propiedades.

Cada objeto Página (Page) tiene una propiedad ÍndiceDePáginas (PageIndex) que indica su posición dentro de la colección Páginas (Pages). La propiedad Valor (Value) del control de ficha es igual a la propiedad ÍndiceDePáginas (PageIndex) de la página actual. Puede usar estas propiedades para determinar qué página está seleccionada actualmente después de que el usuario haya cambiado de una página a otra, o para cambiar el orden en el que aparecen las páginas en el control.

Un objeto Página (Page) es también un tipo de objeto Control. La constante de la propiedad ControlType para un objeto Página (Page) es acPage. Aunque es un control, un objeto Página (Page) pertenece a una colección Páginas (Pages), antes que a una colección Controles (Controls). La colección Páginas (Pages) de un control ficha es un tipo especial de colección Controles (Controls).

Cada objeto Página (Page) puede contener también uno o más controles. Los controles de un objeto Página (Page) pertenecen a la colección Controles (Controls) de ese objeto Página (Page). Para poder trabajar con un control en un objeto Página (Page), debe hacer referencia a ese control dentro de la colección Controles (Controls) del objeto Página (Page).


Ejemplo del objeto Página (Page), colección Páginas (Pages)

El siguiente procedimiento de evento enumera todos los controles de cada página de un control de ficha cuando el usuario selecciona esa página.

Para probar este ejemplo, cree un nuevo formulario con un control de ficha llamado TabCtl0 y establezca su propiedad AlCambiar (OnChange) a [Procedimiento de evento]. Pegue el siguiente código en el módulo del formulario. Cambie a vista Formulario y haga clic en las distintas fichas para enumerar sus controles.

Private Sub TabCtl0_Change()

Dim tbc As Control, pge As Page

Dim ctl As Control

' Devolver referencia a control de ficha.

Set tbc = Me!TabCtl0

' Devolver referencia a página seleccionada actualmente.

Set pge = tbc.Pages(tbc.Value)

' Enumerar los controles de la página seleccionada actualmente.

Debug.Print pge.Name & " Controles:"

For Each ctl In pge.Controls

Debug.Print ctl.Name

Next ctl

Debug.Print

End Sub


Colección Páginas (Pages)

La colección Páginas (Pages) contiene todos los objetos Página (Page) de un control ficha.

Observaciones

La colección Páginas (Pages) es un tipo especial de colección Controles (Controls) que pertenece al control ficha. Contiene objetos Página (Page), que son controles. La colección Páginas (Pages) difiere de una colección Controles (Controls) típica en que se pueden agregar y eliminar objetos Página (Page) usando métodos de la colección Páginas (Pages).

Para agregar un nuevo objeto Página (Page) a la colección Páginas (Pages) desde Visual Basic, use el método Add de la colección Páginas (Pages). Para eliminar un objeto Página (Page) existente, use el método Remove de la colección Páginas (Pages). Para contar el número de objetos Página (Page) en la colección Páginas (Pages), use la propiedad Contar (Count) de la colección Páginas (Pages).

También puede usar el método CreateControl para agregar un objeto Página (Page) a la colección Páginas (Pages) de un control ficha. Para hacerlo, debe especificar el nombre del control ficha para el argumento principal de la función CreateControl. La constante de la propiedad ControlType para un objeto Página (Page) es acPage.

Puede enumerar a través de la colección Páginas (Pages) usando la instrucción For Each...Next.

Los objetos Página (Page) individuales de la colección Páginas (Pages) están indexados comenzando desde cero.


Objeto Reference

El objeto Reference hace referencia a un conjunto de referencias a la biblioteca de tipos de otra aplicación o de otro proyecto.

Observaciones

Cuando se crea un objeto Reference, se establece dinámicamente una referencia desde Visual Basic.

El objeto Reference es un miembro de la colección References. Para hace referencia a un objeto Reference determinado de la colección References, utilice cualquiera de las siguientes formas de sintaxis.

Sintaxis	Descripción
References!nombrereferencia	El argumento nombrereferencia es el nombre del objeto Reference.
References("nombrereferencia")	El argumento nombrereferencia es el nombre del objeto Reference.
References(índice)	El argumento índice es la posición numérica del objeto dentro de la colección.
El siguiente ejemplo hace referencia al objeto Reference que representa la referencia a la biblioteca de tipos de Microsoft Access:

Dim ref As Reference

Set ref = References!Access


Ejemplo del objeto Reference, colección References

El siguiente ejemplo crea una referencia a una biblioteca de tipos determinada:

Function ReferenceFromFile(strFileName As String) As Boolean

Dim ref As Reference

On Error GoTo Error_ReferenceFromFile

Set ref = References.AddFromFile(strFileName)

ReferenceFromFile = True

Exit_ReferenceFromFile:

Exit Function

Error_ReferenceFromFile:

MsgBox Err & ": " & Err.Description

ReferenceFromFile = False

Resume Exit_ReferenceFromFile

End Function

Podría llamar a esta función usando un procedimiento como el siguiente, que crea una referencia al control calendar:

Sub CreateCalendarReference()

If ReferenceFromFile("C:\Windows\System\Mscal.ocx") = True Then

MsgBox "Referencia establecida correctamente."

Else

MsgBox "Referencia no establecida correctamente."

End If

End Sub


Colección References

La colección References contiene objetos Reference que representan a cada una de las referencias establecidas actualmente.

Observaciones

Los objetos Reference de la colección References corresponden a la lista de referencias del cuadro de diálogo Referencias, disponible haciendo clic en Referencias en el menú Herramientas. Cada objeto Reference representa una referencia seleccionada de la lista. Las referencias que aparecen en el cuadro de diálogo Referencias pero que no han sido seleccionadas no aparecen en la colección References.

Puede enumerar a través de la colección References usando la instrucción For Each...Next.

La colección References pertenece al objeto Application de Microsoft Access.

Los objetos Reference individuales de la colección References están indexados comenzando desde 1.


Propiedad hWndAccessApp

La propiedad hWndAccessApp se puede usar para determinar el controlador asignado por Microsoft Windows 95 a la ventana principal de Microsoft Access.

Valores

La propiedad hWndAccessApp es un valor Entero largo establecido por Microsoft Access y es de sólo lectura.

Comentarios

Puede utilizar esta propiedad en Visual Basic cuando efectúe llamadas a las funciones de interfaz de programación de la aplicación (API) de Windows o a otros procedimientos externos que requieran un controlador de ventanas como argumento.

Para obtener el controlador para una ventana que contiene un objeto de Microsoft Access como un formulario o informe, utilice la propiedad CVent (hWnd).


Propiedad TipoDeImagen (PictureType)

La propiedad TipoDeImagen (PictureType) se puede utilizar para especificar si Microsoft Access almacena una imagen de objeto como objeto vinculado o incrustado.

Valores

La propiedad TipoDeImagen (PictureType) utiliza los valores siguientes.

Valor	Descripción	Visual Basic
Incrustado	(Predeterminado) La imagen se incrusta en el objeto y pasa a formar parte del archivo de base de datos.	0
Vinculado	La imagen se vincula al objeto. Microsoft Access guarda en el disco un puntero a la ubicación de la imagen.	1
La propiedad TipoDeImagen (PictureType) se puede establecer utilizando la hoja de propiedades del objeto, una macro o Visual Basic.

Esta propiedad sólo se puede establecer en la vista Diseño del formulario o en la vista Diseño del informe.

En los controles se puede establecer el valor predeterminado de esta propiedad utilizando el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Comentarios

Cuando se establece esta propiedad a Incrustado, el tamaño de la base de datos aumenta en el tamaño del archivo de imagen y, con algunos archivos .wmf, el tamaño puede aumentar hasta el doble del tamaño del archivo de imagen. Cuando se establece esta propiedad a Vinculado, no aumenta el tamaño de la base de datos, porque Microsoft Access sólo guarda en el disco un puntero a la ubicación de la imagen.

Nota   Si se mueve un archivo vinculado a otra ubicación del disco, hay que volver a establecer el vínculo utilizando la propiedad Imagen (Picture) del objeto.

Para las imágenes incrustadas, la propiedad PictureData del objeto guarda los bits individuales que componen el dibujo de la imagen. Para las imágenes vinculadas, esta propiedad guarda la ruta de acceso al archivo de la imagen.

Se puede modificar una imagen vinculada utilizando otra aplicación y los cambios efectuados en la imagen aparecerán la próxima vez que se muestre en la base de datos el objeto que contiene esa imagen.


Propiedad Assistant

La propiedad Assistant se utiliza para devolver una referencia al objeto Assistant.

Valores

[aplicación.]Assistant[.método o propiedad]

La propiedad Assistant utiliza los siguientes valores.

Valor	Descripción
aplicación	Opcional. El objeto Application.
Assistant	Obligatorio. Cuando se utiliza sin especificar un método o propiedad, devuelve la propiedad Item del objeto Assistant.
método o propiedad	Un método o propiedad del objeto Assistant.
La propiedad Assistant sólo está disponible usando Visual Basic.

Comentarios

Una vez que haya establecido una referencia al objeto Assistant, puede tener acceso a todas las propiedades y métodos del objeto. Puede establecer una referencia al objeto Assistant haciendo clic en Referencias en el menú Herramientas mientras se encuentra en la vista Diseño del módulo. A continuación establezca una referencia a la Biblioteca de objetos de Microsoft Office 8.0 en el cuadro de diálogo Referencias seleccionando la casilla de verificación apropiada. Microsoft Access puede establecer esta referencia por usted si utiliza una constante de la Biblioteca de objetos de Microsoft Office 8.0 para establecer una propiedad del objeto Assistant o como argumento de un método del objeto Assistant.


Ejemplo de la propiedad Assistant

El siguiente ejemplo utiliza la propiedad Assistant del objeto Application para manipular varias propiedades y métodos del objeto Assistant. Para probar este ejemplo, pegue el siguiente código en la sección Declaraciones de un módulo estándar. Cree una referencia a la Biblioteca de objetos de Microsoft Office 8.0 usando el cuadro de diálogo Referencias, disponible al hacer clic en Referencias en el menú Herramientas. Luego haga clic en cualquier parte del procedimiento y presione F5 para ejecutarlo.

Sub AnimateAssistant()

Dim blnState As Boolean

With Assistant

' Guardar el estado visible de Assistant.

blnState = .Visible

' Hacer Assistant visible.

If blnState = False Then .Visible = True

' Animar Assistant.

.Animation = msoAnimationAppear

' Mostrar propiedades Item y NombreArchivo de objeto Assistant.

MsgBox "Hola, mi nombre es " & .Item & ". Vivo en " & .FileName, , "Información de Assistant:"

' Devolver estado visible de Assistant a valor original.

.Visible = blnState

End With

End Sub


Propiedad CommandBars

La propiedad CommandBars se utiliza para devolver una referencia al objeto de la colección CommandBars.

Valores

[aplicación.]CommandBars[.método o propiedad]

La propiedad CommandBars utiliza los siguientes valores.

Valor	Descripción
aplicación	Opcional. El objeto Application.
CommandBars	Obligatorio. Cuando se utiliza sin especificar un método o propiedad, devuelve el objeto de la colección CommandBars.
Método o propiedad	Un método o propiedad del objeto de la colección CommandBars. La propiedad Item (colecciones) es la propiedad predeterminada del objeto de la colección CommandBars.
La propiedad CommandBars sólo está disponible usando Visual Basic.

Comentarios

El objeto de la colección CommandBars es la colección de todas las barras de comandos incorporadas y personalizadas de una aplicación. Se puede hacer referencia a los miembros individuales de la colección utilizando el índice de objeto del miembro o una expresión de cadena que es el nombre del objeto miembro. El primer objeto miembro en la colección tiene un valor de índice de 1 y el número total de objetos miembros en la colección es el valor de la propiedad Contar (Count) de la colección CommandBars.

Una vez que haya establecido una referencia al objeto de la colección CommandBars, puede tener acceso a todas las propiedades y métodos del objeto. Puede establecer una referencia al objeto de la colección CommandBars haciendo clic en Referencias en el menú Herramientas mientras se encuentra en la vista Diseño del módulo. Establezca una referencia a la Biblioteca de objetos de Microsoft Office 8.0 en el cuadro de diálogo Referencias seleccionando la casilla de verificación apropiada.


Ejemplo de la propiedad CommandBars

EL siguiente ejemplo usa la propiedad CommandBars del objeto Application para manipular varias propiedades y métodos del objeto de la colección CommandBars. Para probar este ejemplo, pegue el siguiente código en la sección Declaraciones de un módulo estándar. Cree una referencia a la Biblioteca de objetos de Microsoft Office 8.0 usando el cuadro de diálogo Referencias, disponible al hacer clic en Referencias en el menú Herramientas. A continuación haga clic en cualquier parte del procedimiento ObtenerInfoDeBarraDeComandos y presione F5 para ejecutarlo.

Sub ObtenerInfoDeBarraDeComandos()

Dim cadCBBarName As String

cadCBBarName = InputBox("Introducir nombre de una barra de comandos", "Obtener información de CommandBar", "Barra de menús")

If Len(cadCBBarName) > 0 Then

CommandBarInfo cadCBBarName

End If

End Sub

Sub CommandBarInfo(cadCBBarName As String)

Dim cbr As CommandBar

On Error Resume Next

Set cbr = CommandBars(cadCBBarName)

If Err = 0 then

With cbr

MsgBox "La barra de comandos llamada '" & .Name & "' contiene " & _

.Controls.Count & IIf(.Controls.Count = 1, " control y ", _

" controles y ") & IIf(.BuiltIn, "es", "no es") & _

" un barra de herramientas incorporada", vbOKOnly, "'" & _

.Name & "' Información:"

End With

Else

MsgBox "Nombre CommandBar no válido"

End If

End Sub


Propiedad Item (Colecciones)

La propiedad Item devuelve un miembro determinado de una colección por posición o por índice.

Valores

objeto.Item(índice)

La propiedad Item utiliza los siguientes valores.

Valor	Descripción
objeto	Una de las siguientes colecciones: Controles (Controls), Formularios (Forms), Modules, Páginas (Pages), Properties, Informes (Reports).
índice	Una expresión que especifica la posición de un miembro de la colección a la que se hace referencia en el argumento objeto. Si es una expresión numérica, el argumento índice debe ser un número desde 0 al valor de la propiedad Contar (Count) de la colección menos 1. Si es una expresión de cadena, el argumento índice debe ser el nombre de un miembro de la colección.
La propiedad Item sólo está disponible usando Visual Basic y es de sólo lectura.

Comentarios

Si el valor proporcionado por el argumento índice no coincide con ningún miembro de la colección, se producirá un error.

La propiedad Item es el miembro predeterminado de una colección, por lo que no tiene que especificarlo de forma explícita. Por ejemplo, las siguientes dos líneas de código son equivalentes:

Debug.Print Modules(0)

Debug.Print Modules.Item(0)


Propiedad OLEData

La propiedad OLEData se utiliza para copiar datos desde un marco de objeto independiente a otro o desde un control ActiveX a otro.

Valores

nombrecontrol.OLEData

La propiedad OLEData utiliza los siguientes valores.

Valor	Descripción
nombrecontrol	Obligatorio. El nombre de un control de marco de objeto independiente.
OLEData	Obligatorio. Los datos contenidos en un marco de objeto independiente o control ActiveX.
La propiedad OLEData sólo está disponible usando Visual Basic. En el caso de los controles ActiveX, la propiedad OLEData de un control ActiveX se puede establecer en la propiedad OLEData de otro control ActiveX sólo en la vista Diseño.

Comentarios

Esta propiedad se puede utilizar para mostrar los datos de un marco de objeto independiente basado en los datos contenidos en otro marco de objeto independiente.

Cuando se establece la propiedad OLEData de un control ActiveX a la propiedad OLEData de otro control ActiveX, el primer control ActiveX se convierte en otra instancia del segundo control ActiveX. Por ejemplo, el resultado de la siguiente asignación de propiedad es cambiar el control TreeView a un control Calendar:

Me!MyTreeViewControl.OLEData = Me!MyCalendarControl.OLEData


Propiedad Properties

La propiedad Properties se utiliza para devolver una referencia al objeto de la colección Properties de un control.

Valores

nombrecontrol.Properties[.método o propiedad]

La propiedad Properties utiliza los siguientes valores.

Valor	Descripción
nombrecontrol	Obligatorio. El nombre del control a cuyo objeto de la colección Properties desea hacer referencia.
Properties	Obligatorio. Cuando se utiliza sin especificar un método o propiedad, devuelve el objeto de la colección Properties.
Método o propiedad	Un método o propiedad del objeto de la colección Properties. La propiedad Item (colecciones) es la propiedad predeterminada del objeto de la colección Properties.
La propiedad Properties sólo está disponible usando Visual Basic.

Comentarios

El objeto de la colección Properties es la colección de todas las propiedades relacionadas con un control. Puede hacer referencia a los miembros individuales de la colección usando el índice del objeto miembro o una expresión de cadena que sea el nombre del objeto miembro. El primer objeto miembro en la colección tiene un índice de valor 0 y el número total de objetos miembros en la colección es el valor de la propiedad Contar (Count) de la colección Properties menos 1.


Ejemplo de la propiedad Properties

El siguiente procedimiento utiliza la propiedad Properties para imprimir todas las propiedades asociadas con los controles de un formulario en la ventana Depuración. Para ejecutar este código, coloque un botón de comando llamado cmdListProperties en un formulario y pegue el siguiente código en la sección Declaraciones del formulario. Haga clic en botón de comando para imprimir la lista de propiedades en la ventana Depuración.

Sub cmdListProperties_Haga clic en()

ListControlProps Me

End Sub

Sub ListControlProps(frm As Form)

Dim ctl As Control, prp As Property

On Error GoTo props_err

For Each ctl In frm.Controls

Debug.Print ctl.Properties("Nombre")

For Each prp In ctl.Properties

Debug.Print vbTab & prp.Name & " = " & prp.Value

Next prp

Next ctl

props_bye:

Exit Sub

props_err:

If Err = 2187 Then

Debug.Print vbTab & prp.Name & " = Sólo disponible durante el diseño."

Resume Next

Else

Debug.Print vbTab & prp.Name & " = Error producido: " & Err

Resume Next

End If

End Sub


Propiedad ColorDeLosBordes (BorderColor)

La propiedad ColorDeLosBordes (BorderColor) se puede utilizar para especificar el color del borde de un control.

Valores

El valor de la propiedad ColorDeLosBordes (BorderColor) es una expresión numérica que corresponde al color que se desea utilizar para el borde de un control.

Se puede utilizar el generador de color para establecer esta propiedad haciendo clic en el botón Generar [image] que está a la derecha del cuadro de la propiedad en la hoja de propiedades. La Utilización del generador de color permite definir colores de borde personalizados para los controles.

También se puede establecer esta propiedad utilizando la opción Color de borde o de línea  [image]  de la barra de herramientas Formato (formulario o informe), una macro o Visual Basic.

El valor predeterminado de esta propiedad se puede establecer utilizando el estilo de control predeterminado de un control o el método DefaultControl en Visual Basic.

Comentarios

El color del borde de un control sólo es visible cuando su propiedad EfectoEspecial (SpecialEffect) está establecida a Sin relieve o Sombreado. Si la propiedad EfectoEspecial (SpecialEffect) está establecida a algo diferente de Sin relieve o Sombreado, el establecimiento de la propiedad ColorDeLosBordes (BorderColor) modifica el valor de la propiedad EfectoEspecial (SpecialEffect) a Sin relieve.


Ejemplo de las propiedades ColorDeLosBordes (BorderColor), ColorDelFondo (BackColor) y ColorDelTexto (ForeColor)

El ejemplo siguiente utiliza la función RGB para establecer las propiedades ColorDeLosBordes (BorderColor), ColorDelFondo (BackColor) y ColorDelTexto (ForeColor) dependiendo del valor del cuadro de texto txtPastDue. También se puede utilizar la función QBColor para establecer estas propiedades. Al escribir el código siguiente en el evento Form_Current( ) se establecen las características de la pantalla del control en cuanto el usuario abre un formulario o se mueve a un nuevo registro.

Sub Form_Current()

Dim curAmntDue As Currency, lngNegro As Long

Dim lngRojo As Long, lngAmarillo As Long, lngBlanco As Long

If Not IsNull(Me!txtPastDue.Value) Then

curAmntDue = Me!txtPastDue.Value

Else

Exit Sub

End If

lngRojo = RGB(255, 0, 0)

lngNegro = RGB(0, 0, 0)

lngAmarillo = RGB(255, 255, 0)

lngBlanco = RGB(255, 255, 255)

If curAmntDue > 100 Then

Me!txtPastDue.BorderColor = lngRojo

Me!txtPastDue.ForeColor = lngRojo

Me!txtPastDue.BackColor = lngAmarillo

Else

Me!txtPastDue.BorderColor = lngNegro

Me!txtPastDue.ForeColor = lngNegro

Me!txtPastDue.BackColor = lngBlanco

End If

End Sub


Propiedad EstiloDeLosBordes (BorderStyle)

•	Formularios. Se puede utilizar la propiedad EstiloDeLosBordes (BorderStyle) para especificar el tipo de borde y elementos del borde (barra de título, menú Control, botones Minimizar y Maximizar o botón Cerrar) para utilizarlos en el formulario. Se suelen utilizar diferentes estilos de borde para los formularios normales, formularios emergentes y cuadros de diálogo personalizados.

•	Controles. Se puede utilizar la propiedad EstiloDeLosBordes (BorderStyle) para especificar cómo aparece el borde de un control.

Valores

Para los formularios, la propiedad EstiloDeLosBordes (BorderStyle) tiene los valores siguientes.

Valor	Descripción	Visual Basic
Ninguno	El formulario no tiene bordes ni elementos relacionados con el borde. No se puede cambiar el tamaño del formulario.	0
Fino	El formulario tiene bordes delgados y puede incluir cualquiera de los elementos de borde. El formulario no se puede cambiar de tamaño (no está disponible el comando Tamaño del menú Control). Este valor se suele utilizar para los formularios emergentes. (Si desea que un formulario permanezca encima de todas las ventanas de Microsoft Access, también tiene que establecer su propiedad Emergente (PopUp) a Sí.)	1
Ajustable	(Predeterminado) El formulario tiene el borde predeterminado para los formularios de Microsoft Access, puede incluir cualquiera de los elementos de borde y se puede cambiar de tamaño. Este valor se suele utilizar para los formularios normales de Microsoft Access.	2
Diálogo	El formulario tiene bordes gruesos (dobles) y puede incluir sólo una barra de título, un botón Cerrar y un menú Control. El formulario no se puede maximizar, minimizar ni cambiar de tamaño (los comandos Maximizar, Minimizar y Tamaño no están disponibles en el menú Control). Este valor se suele utilizar en los cuadros de diálogo personalizados. (Pero si desea que un formulario sea modal, tiene que establecer también su propiedad Modal a Sí. Si desea que sea un formulario modal emergente, como suelen ser los cuadros de diálogo, tiene que establecer las propiedades Emergente (PopUp) y Modal a Sí.)	3
La propiedad EstiloDeLosBordes (BorderStyle) de un formulario sólo se puede establecer en la vista Diseño del formulario utilizando la hoja de propiedades del formulario, una macro o Visual Basic.

Para los controles, la propiedad EstiloDeLosBordes (BorderStyle) tiene los valores siguientes.

Valor	Descripción	Visual Basic
Transparente	(Predeterminado sólo para etiqueta, gráfico y subinforme) Transparente	0
Sólido	(Predeterminado) Línea sólida	1
Guiones	Línea de guiones	2
Guiones cortos	Línea de guiones cortos	3
Puntos	Línea punteada	4
Puntos separados	Línea punteada con puntos de espacios	5
Guión punto	Línea con una combinación de punto y guión	6
Guión-punto-punto	Línea con una combinación de guión-punto-punto	7
La propiedad EstiloDeLosBordes (BorderStyle) de un control se puede establecer utilizando la hoja de propiedades del control, una macro o Visual Basic.

El valor predeterminado de esta propiedad se puede establecer utilizando el estilo de control predeterminado del control o el método DefaultControl en Visual Basic.

Comentarios

El estilo de los bordes de un control sólo es visible cuando su propiedad EfectoEspecial (SpecialEffect) está establecida a Sin relieve o Sombreado. Si la propiedad EfectoEspecial (SpecialEffect) está establecida a algo diferente a Sin relieve o Sombreado, el establecimiento de la propiedad EstiloDeLosBordes (BorderStyle) modifica el valor de la propiedad EfectoEspecial (SpecialEffect) a Sin relieve.

Para un formulario, la propiedad EstiloDeLosBordes (BorderStyle) establece las características que identifican visualmente el formulario como formulario normal, formulario emergente o cuadro de diálogo personalizado. También se pueden establecer las propiedades Modal y Emergente (PopUp) para definir más características del formulario.

Además, se pueden establecer las propiedades CuadroDeControl (ControlBox), BotónCerrar (CloseButton), BotonesMinMax (MinMaxButtons), BarrasDeDesplazamiento (ScrollBars), BotonesDeDesplazamiento (NavigationButtons) y SelectoresDeRegistro (RecordSelectors) del formulario. Estas propiedades interactúan de la forma siguiente:

•	Si la propiedad EstiloDeLosBordes (BorderStyle) está establecida a Ninguno o Diálogo, el formulario no tiene los botones Maximizar ni Minimizar, independientemente del valor de su propiedad BotonesMinMax (MinMaxButtons).

•	Si la propiedad EstiloDeLosBordes (BorderStyle) está establecida a Ninguno, el formulario no tiene menú Control, independientemente del valor de su propiedad CuadroDeControl (ControlBox).

•	El valor de la propiedad EstiloDeLosBordes (BorderStyle) no afecta a la presentación de las barras de desplazamiento, los botones de desplazamiento, el cuadro número de registro o los selectores de registro.

La propiedad EstiloDeLosBordes (BorderStyle) sólo tiene efecto en la vista Formulario. El valor de la propiedad se ignora en la vista Diseño de formulario.

Si se establece la propiedad EstiloDeLosBordes (BorderStyle) de un formulario emergente a Ninguno, no se podrá cerrar el formulario a menos que se coloque en él un botón Cerrar que ejecute una macro que contenga la acción Cerrar o un procedimiento de evento de Visual Basic que utilice el método Close.

Los formularios emergentes suelen ser de tamaño fijo, pero se puede hacer puedan cambiar de tamaño estableciendo su propiedad Emergente (PopUp) a Sí y su propiedad EstiloDeLosBordes (BorderStyle) a Ajustable.

También se puede utilizar el valor Diálogo del argumento de acción del Modo de ventana de la acción AbrirFormulario para abrir un formulario con las propiedades Modal y Emergente (PopUp) establecidas a Sí.


Propiedad ColorDelTexto (ForeColor)

La propiedad ColorDelTexto (ForeColor) se puede utilizar para especificar el color del texto de un control. Esta propiedad se puede utilizar en los controles de formularios o informes para hacerlos más fáciles de leer o para darles un significado especial. Por ejemplo, se puede cambiar el color del texto del control UnidadesEnExistencia cuando su valor cae por debajo del nivel de reaprovisionamiento.

También se puede utilizar esta propiedad en los informes para crear efectos visuales especiales cuando se imprime con una impresora a color. Al utilizarla en un informe, esta propiedad especifica el color de la impresión y de los dibujos de los métodos Print, Line y Circle.

Valores

La propiedad ColorDelTexto (ForeColor) contiene una expresión numérica que representa el valor del color del texto del control.

Se puede utilizar el generador de color para establecer esta propiedad haciendo clic en el botón Generar [image] que está a la derecha del cuadro de propiedades en la hoja de propiedades. La utilización del generador de color permite definir colores personalizados para el texto de los controles.

Para los controles, se puede establecer esta propiedad utilizando el botón Color de fuente o de primer plano  [image] de la barra de herramientas Formato (formulario o informe), la hoja de propiedades del control, una macro o Visual Basic.

El valor predeterminado de esta propiedad se puede establecer utilizando el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Para los informes, sólo se puede establecer la propiedad ColorDelTexto (ForeColor) utilizando una macro o un procedimiento de evento de Visual Basic especificado en el valor de la propiedad del evento OnPrint de una sección.

Para los objetos TableDef o QueryDef se puede establecer esta propiedad utilizando Color de fuente o de primer plano  [image] de la barra de herramientas Formato (hoja de datos) o en Visual Basic utilizando la propiedad DatasheetForeColor.

Comentarios

Para un cuadro de texto, cuadro combinado, etiqueta o botón de comando que contiene un hipervínculo, Microsoft Access establece automáticamente la propiedad ColorDelTexto (ForeColor) al color especificado en el cuadro Color de hipervínculo visitado o Color de hipervínculo de la ficha Hipervínculos/HTML del cuadro de diálogo Opciones, que está disponible haciendo clic en la opción Opciones del menú Herramientas. Si se elimina el hipervínculo del control (por ejemplo, estableciendo la propiedad OrigenDelControl (ControlSource) de un cuadro de texto dependiente a un origen que no sea un campo Hipervínculo), Microsoft Access vuelve a establecer la propiedad ColorDelTexto (ForeColor) al estilo de control predeterminado. Para botones de comando, el valor de la propiedad ColorDelTexto (ForeColor) surte efecto sólo si el botón de comando contiene un título en lugar de un dibujo


Propiedad Imagen (Picture)

Se puede utilizar la propiedad Imagen (Picture) para especificar un mapa de bits o cualquier otro tipo de gráfico para mostrarlo en un botón de comando, control imagen, botón de alternar, página en un control ficha o como imagen de fondo en un formulario o informe. Los botones pueden presentar un título o una imagen.

Valores

La propiedad Imagen (Picture) contiene (mapa de bits) o la ruta de acceso y el nombre de archivo de un mapa de bits u otro tipo de gráfico a mostrar.

Se puede establecer esta propiedad utilizando:

•	La hoja de propiedades. Haga clic en el botón Generar [image] que está a la derecha del cuadro de propiedades (para los botones de comando o los de alternar). Cuando se selecciona uno de los archivos de mapa de bits de la lista Imágenes disponibles, el valor de la propiedad es (mapa de bits).

•	Una macro.

•	Visual Basic. Se puede utilizar una expresión de cadena que incluya la ruta de acceso y el nombre del gráfico, como en el ejemplo siguiente:

btnShowLogo.Imagen = "c:\Windows\Winlogo.bmp"

•	El comando Imagen del menú Insertar (para los controles imagen o las imágenes de fondo de formularios e informes) para seleccionar un mapa de bits u otro tipo de gráfico.

El valor predeterminado es (ninguna). Después de cargar el gráfico en el objeto, el valor de la propiedad es (mapa de bits) o la ruta de acceso y nombre de archivo del gráfico. Si elimina (mapa de bits) o la ruta de acceso y nombre de archivo del gráfico del valor de la propiedad, la imagen se borra del objeto y el valor de la propiedad vuelve a ser (ninguna).

Si la propiedad TipoDeImagen (PictureType) está establecida a Incrustado, el gráfico se guarda con el objeto.

Comentarios

Se pueden crear mapas de bits personalizados utilizando Microsoft Paintbrush o cualquier otra aplicación que cree archivos de mapa de bits. Un archivo de mapa de bits ha de tener una extensión .bmp, .ico o .dib. También se pueden utilizar archivos de gráficos con formato .wmf o .emf o cualquier otro tipo de archivo de gráficos para el que se disponga de un filtro de gráficos. Los formularios, informes y controles imagen admiten todos los gráficos. Los botones de comando y de alternar sólo admiten mapas de bits.

Los botones pueden mostrar un título o una imagen. Si asigna ambos a un botón, la imagen será visible, pero el título no. Si se borra la imagen, vuelve a aparecer el título. Microsoft Access muestra la imagen centrada en el botón y la recorta si la imagen es más grande que el botón.

Sugerencia   Para crear un botón de comando o de alternar con un título y una imagen, se puede incluir el título deseado como parte del mapa de bits y asignar éste a la propiedad Imagen (Picture) del control.


Propiedad Visible (Microsoft Access)
Propiedad Visible

La propiedad Visible se puede utilizar para mostrar u ocultar un formulario, informe, sección de formulario o informe o un control. Puede ser útil si se desea mantener acceso a la información sin que sea visible. Por ejemplo, se puede usar el valor de un control de un formulario oculto como criterio para una consulta.

Valores

La propiedad Visible tiene los valores siguientes.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) El objeto es visible.	True (–1)
No	El objeto no es visible.	False (0)
Se puede establecer esta propiedad utilizando la hoja de propiedades del objeto (para las secciones y todos los controles excepto salto de página), una macro o Visual Basic.

Para los formularios e informes hay que establecer esta propiedad utilizando una macro o Visual Basic.

Para los controles, se puede establecer el valor predeterminado de esta propiedad utilizando el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Comentarios

La propiedad Visible no surte ningún efecto en las columnas en la vista Hoja de datos. Para especificar si es visible una columna en la vista Hoja de datos, se utiliza la propiedad ColumnHidden.

Para ocultar un objeto al imprimir, se utiliza la propiedad MostrarCuando (DisplayWhen).

Se puede utilizar la propiedad Visible para ocultar un control de un formulario o informe incluyendo la propiedad en una macro o procedimiento de evento que se ejecute al producirse el evento Current. Por ejemplo, se puede mostrar u ocultar un mensaje de felicitación al lado del total de ventas mensuales de un vendedor en un informe de ventas, dependiendo del total de ventas.

Nota   También hay una propiedad Visible en el objeto Application que se puede establecer para hacer que la aplicación sea invisible. Esta propiedad sólo se puede establecer con Visual Basic.


Propiedad ColorDelFondo (BackColor)

La propiedad ColorDelFondo (BackColor) se puede utilizar para especificar el color del interior de un control o una sección.

Valores

La propiedad ColorDelFondo (BackColor) contiene una expresión numérica que corresponde al color que se utiliza para rellenar el interior de un control o sección.

Se puede utilizar el generador de color para establecer esta propiedad haciendo clic en el botón Generar  [image] que está a la derecha del cuadro de propiedades en la hoja de propiedades. La utilización del generador de color permite definir colores de fondo personalizados para los controles o secciones.

También se puede establecer esta propiedad utilizando la opción Color de fondo o de relleno  [image] de la barra de herramientas Formato (formulario o informe), la hoja de propiedades del control o sección, una macro o Visual Basic.

En Visual Basic, utilice una expresión numérica para establecer esta propiedad. El valor de esta propiedad es del tipo de datos Largo.

Se puede establecer el valor predeterminado de esta propiedad utilizando el estilo de control predeterminado de un control o el método DefaultControl en Visual Basic.

Para los objetos TableDef o QueryDef se puede establecer esta propiedad utilizando la opción Color de fondo o de relleno [image] de la barra de herramientas Formato (Hoja de datos) o en Visual Basic con la propiedad DatasheetBackColor.

Comentarios

Para utilizar la propiedad ColorDelFondo (BackColor), la propiedad EstiloDelFondo (BackStyle), si está disponible, tiene que estar establecida a Normal.


Propiedad EstiloDelFondo (BackStyle)

La propiedad EstiloDelFondo (BackStyle) se puede utilizar para especificar si un control va a ser transparente.

Valores

La propiedad EstiloDelFondo (BackStyle) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Normal	(Predeterminado para todos los controles, excepto grupo de opciones) El control tiene el color interior establecido por la propiedad ColorDelFondo (BackColor).	1
Transparente	(Predeterminado para el control grupo de opciones) El control es transparente. Se puede ver el color del formulario o informe detrás del control.	0
Esta propiedad se puede establecer utilizando la opción Color de fondo o de relleno  [image] de la barra de herramientas Formato (formulario o informe), la hoja de propiedades de un control, una macro o Visual Basic.

Se puede establecer el valor predeterminado de esta propiedad utilizando el estilo de control predeterminado de un control o el método DefaultControl en Visual Basic.

Comentarios

Si se selecciona el botón Transparente de la paleta de botones de Color de fondo, la propiedad EstiloDelFondo (BackStyle) se establece a Transparente; de lo contrario, la propiedad EstiloDelFondo (BackStyle) se establece a Normal.

Sugerencia   Para hacer invisible un botón de comando, establezca su propiedad Transparente (Transparent) a Sí.


Propiedad AnchuraDeLosBordes (BorderWidth)

La propiedad AnchuraDeLosBordes (BorderWidth) se puede utilizar para especificar el ancho de los bordes de un control.

Valores

La propiedad AnchuraDeLosBordes (BorderWidth) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Trazo fino	(Predeterminado) El borde más estrecho posible en el sistema.	0
1 pto. a 6 ptos.	El ancho que se indica en puntos.	1 a 6
Esta propiedad se puede establecer utilizando Ancho de línea o de borde  [image] de la barra de herramientas Formato (formulario o informe), la hoja de propiedades del control, una macro o Visual Basic.

El valor predeterminado de esta propiedad se puede establecer utilizando el estilo de control predeterminado del control o el método DefaultControl en Visual Basic.

Comentarios

Para utilizar la propiedad AnchuraDeLosBordes (BorderWidth), hay que establecer la propiedad EfectoEspecial (SpecialEffect) a Sin relieve o Sombreado y la propiedad EstiloDeLosBordes (BorderStyle) no tiene que estar establecida a Transparente. Si la propiedad EfectoEspecial (SpecialEffect) está establecida a cualquier otro valor y/o la propiedad EstiloDeLosBordes (BorderStyle) está establecida a Transparente y se establece la propiedad AnchuraDeLosBordes (BorderWidth), la propiedad EfectoEspecial (SpecialEffect) se restablece automáticamente a Sin relieve y la propiedad EstiloDeLosBordes (BorderStyle) se restablece automáticamente a Sólido.

El ancho de los bordes exacto depende del equipo y la impresora. En algunos sistemas, el ancho de trazo fino y el de 1 punto parecen el mismo.


Propiedad ColorDeRelleno (FillColor)

La propiedad ColorDeRelleno (FillColor) se utiliza para especificar el color que rellena los cuadros y círculos dibujados en los informes con los métodos Line y Circle. También se puede usar esta propiedad con Visual Basic para crear efectos visuales especiales en los informes personalizados cuando se imprime utilizando una impresora a color o se ven previamente los informes en un monitor a color.

Valores

La propiedad ColorDeRelleno (FillColor) contiene una expresión numérica que especifica el color de relleno para todos los cuadros y círculos.

Esta propiedad sólo se puede establecer utilizando una macro o un procedimiento de evento de Visual Basic especificado por la propiedad del evento OnPrint de una sección.

Para establecer esta propiedad se pueden utilizar las funciones RGB o QBColor. El valor de la propiedad ColorDeRelleno (FillColor) es del tipo de datos Largo.


Propiedad Inclinación (LineSlant)

La propiedad Inclinación (LineSlant) se utiliza para especificar si un control línea se inclina desde la parte superior izquierda a la parte inferior izquierda o viceversa.

Valores

La propiedad Inclinación (LineSlant) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
\	(Predeterminado) De superior izquierda a inferior derecha	False (0)
/	De superior derecha a inferior izquierda	True (–1)
Esta propiedad se puede establecer utilizando la hoja de propiedades del control, una macro o Visual Basic.

Comentarios

Utilice la propiedad Inclinación (LineSlant) para cambiar la dirección de una línea. Para colocar y cambiar el tamaño de la línea en un formulario o informe, utilice el mouse.


Propiedad EfectoEspecial (SpecialEffect)

La propiedad EfectoEspecial (SpecialEffect) se puede utilizar para especificar si se va a aplicar un formato especial a una sección o control.

Valores

La propiedad EfectoEspecial (SpecialEffect) puede tener los valores siguientes.

Valor	Ejemplo	Descripción	Visual Basic
Sin relieve		El objeto parece plano y tiene los colores predeterminados del sistema o los colores personalizados que se han establecido en la vista Diseño.	0
En relieve		El objeto está resaltado en la parte superior e izquierda y sombreado en la parte inferior y derecha.	1
Bajo relieve		El objeto tiene una sombra en la parte superior e izquierda y está resaltado en la parte inferior y derecha.	2
Grabado		El objeto tiene una línea hundida rodeando el control.	3
Sombreado		El objeto tiene una sombra debajo y a la derecha del control.	4
Cincelado		El objeto tiene una línea hundida debajo del control.	5
Esta propiedad se puede establecer utilizando el botón Efecto especial de la barra de herramientas Formato (formulario o informe), la hoja de propiedades del objeto, una macro o Visual Basic.

Para los controles, se puede establecer el valor predeterminado de esta propiedad utilizando el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Comentarios

El valor de la propiedad EfectoEspecial (SpecialEffect) afecta a los valores de las propiedades relacionadas: EstiloDeLosBordes (BorderStyle), ColorDeLosBordes (BorderColor) y AnchuraDeLosBordes (BorderWidth). Por ejemplo, si la propiedad EfectoEspecial (SpecialEffect) está establecida a En relieve, se ignoran los valores de las propiedades EstiloDeLosBordes (BorderStyle), ColorDeLosBordes (BorderColor) y AnchuraDeLosBordes (BorderWidth). Además, modificar o establecer las propiedades EstiloDeLosBordes (BorderStyle), ColorDeLosBordes (BorderColor) y AnchuraDeLosBordes (BorderWidth) puede hacer que Microsoft Access cambie el valor de la propiedad EfectoEspecial (SpecialEffect) a Sin relieve.

Nota   Cuando se establece la propiedad EfectoEspecial (SpecialEffect) de un cuadro de texto a Sombreado, se reduce el alto vertical del área de texto de la pantalla. La propiedad Altura (Height) del cuadro de texto se puede ajustar para aumentar el tamaño del área de texto de la pantalla.


Propiedad Transparente (Transparent)

La propiedad Transparente (Transparent) se puede utilizar para especificar si un botón de comando es sólido o transparente.

Sugerencia   Utilice la propiedad EstiloDelFondo (BackStyle) para hacer sólidos o transparentes otros controles.

Valores

La propiedad Transparente (Transparent) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	El botón es transparente.	True (–1)
No	(Predeterminado) El botón es sólido.	False (0)
Esta propiedad se puede establecer utilizando la hoja de propiedades del botón de comando, una macro o Visual Basic.

Comentarios

Se puede utilizar esta propiedad para colocar un botón de comando transparente encima de otro control. Por ejemplo, se podrían colocar varios botones transparentes encima de una imagen que aparezca en un control imagen y ejecutar varias macros o varios procedimientos de evento de Visual Basic, dependiendo de la parte de la imagen en la que hace clic el usuario.

Nota   Para ocultar y deshabilitar un botón, utilice la propiedad Visible. Para deshabilitar un botón sin ocultarlo, utilice la propiedad Activado (Enabled). Para ocultar un botón sólo cuando se imprime un formulario o informe, utilice la propiedad MostrarCuando (DisplayWhen).


Ejemplo de las propiedades ColorDeRelleno y EstiloDeRelleno (FillColor y FillStyle)

En el ejemplo siguiente se utiliza el método Circle para dibujar un círculo y crear un sector dentro del círculo. Luego se utilizan las propiedades ColorDeRelleno (FillColor) y EstiloDeRelleno (FillStyle) para colorear en rojo el sector del círculo. También traza un radio desde la parte superior izquierda al centro del círculo.

Para probar este ejemplo en Microsoft Access, cree un informe nuevo. Establezca la propiedad AlImprimir (OnPrint) de la sección Detalles a [Procedimiento de evento]. Introduzca el código siguiente en el módulo del informe y cambie luego a Vista preliminar.

Private Sub Detalle_Print(Cancel As Integer, PrintCount As Integer)

Const conPI = 3.14159265359

Dim sngCtrH As Single, sngCtrV As Single, sngRadio As Single

Dim sngInicio As Single, sngFin As Single

sngCtrH = Me.ScaleWidth / 2	' Centro horizontal.

sngCtrV = Me.ScaleHeight / 2	' Centro vertical.

sngRadio = Me.ScaleHeight / 3	' Radio del círculo.

Me.Circle(sngCtrH, sngCtrV), sngRadio	' Dibuja un círculo.

sngInicio = -0.00000001	' Inicio del sector de círculo.

sngFin = -2 * conPI / 3	' Fin del sector de círculo.

Me.FillColor = RGB(255,0,0)	' Colorea el sector de círculo rojo.

Me.FillStyle = 0	' Rellena el sector de círculo.

' Dibuja el sector dentro del círculo

Me.Circle(sngCtrH, sngCtrV), sngRadio, , sngInicio, sngFin

' Dibuja una línea al centro del círculo.

Dim entColor As Integer

Dim sngSuperior As Single, sngIzquierda As Single

Dim sngAncho As Single, sngAlto As Single

Me.ScaleMode = 3	' Establece la escala a píxels.

sngSuperior = Me.ScaleTop	' Borde interno superior.

sngIzquierda = Me.ScaleLeft	' Borde interno izquierdo.

sngAncho = Me.ScaleWidth / 2	' Ancho del borde interno.

sngAlto = Me.ScaleHeight / 2	' Alto del borde interno.

entColor = RGB(255, 0, 0)	' Pone el color rojo.

' Dibuja un línea.

Me.Line (sngSuperior, sngIzquierda)-(sngAncho, sngAlto), entColor

End Sub


Propiedad ActiveDatasheet

La propiedad ActiveDatasheet se puede utilizar junto con el objeto Pantalla (Screen) para identificar o hacer referencia a la hoja de datos que tiene el enfoque.

Valores

El valor de la propiedad ActiveDatasheet contiene el objeto hoja de datos que tiene el enfoque en tiempo de ejecución.

Esta propiedad sólo está disponible utilizando una macro o Visual Basic y es de sólo lectura en todas las vistas.

Comentarios

Esta propiedad se puede utilizar para hacer referencia a una hoja de datos activa junto con una de sus propiedades o métodos. Por ejemplo, el siguiente código utiliza la propiedad ActiveDatasheet para hacer referencia a la fila superior de la selección de la hoja de datos activa.

FilaSuperior = Pantalla.HojaDeDatosActiva.SelecSuperior


Ejemplo de la propiedad ActiveDatasheet

El siguiente ejemplo utiliza la propiedad ActiveDatasheet para identificar la celda de la hoja de datos que tiene el enfoque y, si hay seleccionada más de una celda, la ubicación de la primera fila y columna en la selección.

Sub ObtenerSelección()

Dim objHojaDeDatos As Object

Dim lngPrimeraFila As Long, lngPrimeraColumna As Long

Const conHojaDeDatosNoActiva = 2484

On Error GoTo ObtenerSelección_Err

Set objHojaDeDatos = Pantalla.ActiveDatasheet

lngPrimeraFila = objHojaDeDatos.SelecSuperior

lngPrimeraColumna = objHojaDeDatos.SelecIzqu

MsgBox "El primer elemento en esta selección está ubicado en "_

& "Fila " & lngPrimeraFila & ", Columna " & lngPrimeraColumna

ObtenerSelección_Adiós:

Exit Sub

ObtenerSelección_Err:

If Err = conHojaDeDatosNoActiva Then

Resume ObtenerSelección_Adiós

End If

End Sub


Propiedad ColumnaDependiente (BoundColumn)

Al realizar una selección en un cuadro de lista o un cuadro combinado, la propiedad ColumnaDependiente (BoundColumn) indica a Microsoft Access la columna cuyos valores debe utilizar como valor del control. Si el control depende de un campo, el valor de la columna especificada por la propiedad ColumnaDependiente (BoundColumn) se almacena en el campo indicado en la propiedad OrigenDelControl (ControlSource).

Valores

La propiedad ColumnaDependiente (BoundColumn) puede tener los valores siguientes:

Valor	Descripción
0	El valor de la propiedad ListIndex, en lugar del valor de la columna, se almacena en el registro actual. El valor de la propiedad ListIndex de la primera fila es 0, de la segunda fila es 1, etc. Microsoft Access establece la propiedad ListIndex cuando se selecciona un elemento de un cuadro de lista o de la parte de cuadro de lista de un cuadro combinado. El establecimiento de la propiedad ColumnaDependiente (BoundColumn) a 0 y el uso del valor de la propiedad ListIndex del control pueden resultar útiles si, por ejemplo, sólo tiene interés en almacenar una secuencia de números.
1 ó mayor	(El valor predeterminado es 1).  El valor de la columna especificada se convierte en el valor del control. Si el control depende de un campo, este valor se almacena en ese campo en el registro actual. La propiedad ColumnaDependiente (BoundColumn) no puede establecerse a un valor mayor que el valor de la propiedad NúmeroDeColumnas (ColumnCount).
Puede establecer la propiedad ColumnaDependiente (BoundColumn) mediante la hoja de propiedades del control, una macro o Visual Basic.

Para los campos de tabla, puede establecer esta propiedad en la ficha Búsqueda de la sección Propiedades del campo de la vista Diseño de la tabla para los campos cuya propiedad Mostrar control esté establecida a Cuadro combinado o a Cuadro de lista.

Sugerencia   Microsoft Access establece la propiedad ColumnaDependiente (BoundColumn) automáticamente al seleccionar Asistente para búsquedas como tipo de datos de un campo en la vista Diseño de la tabla.

En Visual Basic, establezca la propiedad ColumnaDependiente (BoundColumn) utilizando un número o una expresión numérica cuyo valor se encuentre entre 0 y el valor de la propiedad NúmeroDeColumnas (ColumnCount).

Comentarios

La columna visible más a la izquierda de un cuadro combinado (la columna situada más a la izquierda cuyo valor de la propiedad AnchuraDeColumnas (ColumnWidths) del cuadro combinado no sea 0) contiene los datos que aparecen en el cuadro de texto que forma parte del cuadro combinado en la vista Formulario o en un informe. La propiedad ColumnaDependiente (BoundColumn) determina la columna cuyo valor del cuadro de texto o el cuadro combinado se almacenará al realizar una selección. Esto permite mostrar datos diferentes de los almacenados como el valor del control.

Nota   Si la columna dependiente no es la misma que la columna visible situada más a la izquierda del control (o si establece la propiedad ColumnaDependiente (BoundColumn) a 0), la propiedad LimitarALista (LimitToList) se establece a Sí.

Microsoft Access utiliza números basados en cero para hacer referencia a las columnas de la propiedad Columna (Column). Es decir, se hace referencia a la primera columna mediante la expresión Column(0); se hace referencia a la segunda columna mediante la expresión Column(1); etc. No obstante, la propiedad ColumnaDependiente (BoundColumn) utiliza números basados en 1 para hacer referencia a las columnas. Esto quiere decir que si la propiedad ColumnaDependiente (BoundColumn) está establecida a 1, puede tener acceso al valor almacenado en esa columna mediante la expresión Column(0).

Si la propiedad ExpansiónAutomática (AutoExpand) está establecida a Sí, Microsoft Access introduce automáticamente un valor en la parte del cuadro de texto del cuadro combinado que coincide con un valor de la lista del cuadro combinado a medida que el usuario escribe el valor.


Propiedad Columna (Column)

Puede utilizar la propiedad Columna (Column) para hacer referencia a una columna específica o a una combinación de columna y fila de un cuadro combinado o a un cuadro de lista de varias columnas. Utilice 0 para hacer referencia a la primera columna, 1 para hacer referencia a la segunda columna, etc. Por ejemplo, en un cuadro de lista que contiene una columna Id. de cliente y una columna de nombres de clientes, puede hacer referencia al nombre del cliente de la segunda columna y la quinta fila como:

Forms!Contacto!Clientes.Column(1, 4)

Valores

control.Column(columna, fila)

La propiedad Columna (Column) puede tener los valores siguientes.

Valor	Descripción
control	Un objeto Control que representa el control del cuadro de lista o cuadro combinado activo.
columna	Un número entero que puede oscilar entre 0 y el valor de la propiedad NúmeroDeColumnas (ColumnCount) menos uno.
fila	Opcional. Un número entero que puede oscilar entre 0 y el valor de la propiedad ListCount menos 1.
El valor de esta propiedad sólo está disponible mediante una macro o Visual Basic. El valor de esta propiedad no está disponible en la vista Diseño y es de sólo lectura en las demás vistas.

Comentarios

Puede utilizar la propiedad Columna (Column) para asignar el contenido de un cuadro combinado o un cuadro de lista a otro control, como un cuadro de texto. Por ejemplo, para establecer la propiedad OrigenDelControl (ControlSource) de un cuadro de texto al valor de la segunda columna de un cuadro de lista, puede utilizar la expresión siguiente:

=Forms!Clientes!NombreCompañía.Column(1)

Si el usuario no ha realizado ninguna selección cuando se hace referencia a una columna de un cuadro combinado o un cuadro de lista, el valor de la propiedad Columna (Column) será Null. Puede utilizar la función EsNulo (IsNull) para determinar si se ha realizado una selección, como muestra el ejemplo siguiente:

If IsNull(Forms!Clientes!País)

Then MsgBox "Ninguna selección."

End If

Nota   Para determinar cuántas columnas tiene un cuadro combinado o un cuadro de lista, puede comprobar el valor de la propiedad NúmeroDeColumnas (ColumnCount).


Ejemplo de las propiedades Columna (Column) y NúmeroDeColumnas (ColumnCount)

El ejemplo siguiente utiliza la propiedad Columna (Column) y la propiedad NúmeroDeColumnas (ColumnCount) para mostrar los valores de una selección de un cuadro de lista.

Sub Leer_ListBox()

Dim entNúmColumnas As Integer, enti As Integer

Dim frmClien As Form

Set frmClien = Forms!frmClientes

If frmClien!lstNombresClientes.ItemsSelected.Count > 0 Then

' ¿Alguna selección?

entNúmColumnas = frmClien!lstNombresClientes.ColumnCount

Debug.Print "El cuadro de lista contiene "; entNúmColumnas; _

IIf(entNúmColumnas = 1, " columna", " columnas"); " de datos."

Debug.Print "La selección actual contiene:"

For enti = 0 To entNúmColumnas - 1

Debug.Print frmClien!lstNombresClientes.Column(enti)   ' Mostrar los datos de la columna.

Next enti

Else

Debug.Print "No ha seleccionado ninguna entrada del cuadro de lista."

End If

End Sub


Propiedad NúmeroDeColumnas (ColumnCount)

Puede utilizar la propiedad NúmeroDeColumnas (ColumnCount) para especificar el número de columnas mostradas en un cuadro de lista, en la lista de un cuadro combinado, enviadas a objetos OLE de un control de gráfico, o un marco de objeto independiente. Por ejemplo, si establece la propiedad NúmeroDeColumnas (ColumnCount) de un cuadro de lista de un formulario Empleados a 3, una columna puede contener los apellidos, otra puede contener los nombres y la tercera puede contener los números de Id. de empleado.

Valores

La propiedad NúmeroDeColumnas (ColumnCount) contiene un número entero entre 1 y el número máximo de campos de la tabla, la consulta o la instrucción SQL o el número máximo de valores de la lista de valores, especificado en la propiedad OrigenDeLaFila (RowSource) del control.

Puede establecer la propiedad NúmeroDeColumnas (ColumnCount) mediante la hoja de propiedades del control, una macro o Visual Basic.

Para los campos de tabla, puede establecer esta propiedad en la ficha Búsqueda de la sección Propiedades del campo de la vista Diseño de la tabla para los campos cuya propiedad Mostrar control esté establecida a Cuadro combinado o Cuadro de lista.

Sugerencia   Microsoft Access establece la propiedad NúmeroDeColumnas (ColumnCount) automáticamente al seleccionar Asistente para búsquedas como tipo de datos para un campo en la vista Diseño de la tabla.

Comentarios

Un cuadro combinado o un cuadro de lista puede tener varias columnas. Si la propiedad OrigenDeLaFila (RowSource) del control contiene el nombre de una tabla, una consulta o una instrucción SQL, el cuadro combinado o el cuadro de lista mostrará los campos de ese origen de izquierda a derecha, hasta alcanzar el número especificado en la propiedad NúmeroDeColumnas (ColumnCount).

Para mostrar una combinación de campos diferente, cree una nueva consulta o una nueva instrucción SQL para la propiedad OrigenDeLaFila (RowSource), especificando los campos y el orden deseado.

Si la propiedad OrigenDeLaFila (RowSource) contiene una lista de valores (la propiedad TipoDeOrigenDeLaFila (RowSourceType) está establecida a Lista de valores), los valores se insertan en las filas y columnas del cuadro combinado o en el cuadro de lista en el orden en que aparecen enumeradas en la propiedad OrigenDeLaFila (RowSource). Por ejemplo, si la propiedad OrigenDeLaFila (RowSource) contiene la lista "Rojo; Verde; Azul; Amarillo" y la propiedad NúmeroDeColumnas (ColumnCount) está establecida a 2, la primera fila del cuadro combinado o el cuadro de lista contendrá "Rojo" en la primera columna y "Verde" en la segunda columna. La segunda fila contendrá "Azul" en la primera columna y "Amarillo" en la segunda columna.

Puede utilizar la propiedad AnchuraDeColumnas (ColumnWidths) para establecer el ancho de las columnas mostradas en el control o para ocultar columnas.


Propiedad EncabezadosDeColumna (ColumnHeads)

Puede utilizar la propiedad EncabezadosDeColumna (ColumnHeads) para mostrar una sola fila de encabezados de columna para los cuadros de lista, los cuadros combinados y los objetos OLE que acepten encabezados de columna. También puede emplear esta propiedad para crear una etiqueta para cada entrada de un control de gráfico. Lo que se muestra realmente como el encabezado de columna de la primera fila depende de la propiedad TipoDeOrigenDeLaFila (RowSourceType) del objeto.

Valores

La propiedad EncabezadosDeColumna (ColumnHeads) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	Los encabezados de columna están habilitados y los títulos de campo, los nombres de campo o la primera fila de elementos de datos se utilizan como encabezados de columnas o como etiquetas de gráficos.	True (–1)
No	(Valor predeterminado) Los encabezados de columna no están habilitados.	False (0)
Puede establecer la propiedad EncabezadosDeColumna (ColumnHeads) mediante la hoja de propiedades del control, una macro o Visual Basic.

Para los campos de tabla, puede establecer esta propiedad en la ficha Búsqueda de la sección Propiedades del campo de la vista Diseño de la tabla para los campos cuya propiedad Mostrar control esté establecida a Cuadro combinado o Cuadro de lista.

Sugerencia   Microsoft Access establece automáticamente la propiedad EncabezadosDeColumna (ColumnHeads) cuando se selecciona Asistente para búsquedas como tipo de datos para un campo en la vista Diseño de la tabla.

Comentarios

La propiedad TipoDeOrigenDeLaFila (RowSourceType) especifica si para crear los encabezados de columna se utilizan los nombres de campo o la primera fila de elementos de datos. Si la propiedad TipoDeOrigenDeLaFila (RowSourceType) está establecida a Tabla/Consulta, se utilizan los nombres de campo como encabezados de columna. Si el campo tiene un título, se muestra el título. Por ejemplo, si un cuadro de lista tiene tres columnas (la propiedad NúmeroDeColumnas (ColumnCount) está establecida a 3) y la propiedad TipoDeOrigenDeLaFila (RowSourceType) está establecida a Tabla/Consulta, los tres primeros nombres (o títulos) de campo se utilizan como encabezados.

Si la propiedad TipoDeOrigenDeLaFila (RowSourceType) está establecida a Lista de valores, la primera fila de elementos de datos introducidos en la lista de valores (como el valor de la propiedad OrigenDeLaFila (RowSource)) formará los encabezados de columna. Por ejemplo, si un cuadro de lista tiene tres columnas y la propiedad TipoDeOrigenDeLaFila (RowSourceType) está establecida a Lista de valores, los tres primeros elementos de la propiedad OrigenDeLaFila (RowSource) se utilizan como encabezados de columna.

Sugerencia   Si no puede seleccionar la primera fila de un cuadro de lista o un cuadro combinado en la vista Formulario, compruebe si la propiedad EncabezadosDeColumna (ColumnHeads) está establecida a Sí.

Los encabezados de los cuadros combinados aparecen sólo cuando se muestra la lista del control.


Propiedad AnchuraDeColumnas (ColumnWidths)

Puede utilizar la propiedad AnchuraDeColumnas (ColumnWidths) para especificar el ancho de cada columna de un cuadro combinado o un cuadro de lista de varias columnas. También puede emplear esta propiedad para ocultar una o más columnas.

Valores

La propiedad AnchuraDeColumnas (ColumnWidths) contiene un valor que especifica el ancho de cada columna en pulgadas o centímetros, dependiendo del sistema de medición (EE.UU. o Métrico) seleccionado en el cuadro Sistema de medida de la ficha Número del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. El valor predeterminado es 1 pulgada o 2,54 centímetros. El valor de la propiedad AnchuraDeColumnas (ColumnWidths) debe encontrarse entre 0 y 22 pulgadas (55,87 cm) para cada columna del cuadro de lista o el cuadro combinado.

Para separar las entradas de las columnas, utilice caracteres de punto y coma (;) como separadores de lista (o el separador de lista seleccionado en el cuadro Separador de listas de la ficha Número del cuadro de diálogo Propiedades de Configuración regional).

Un ancho de 0 oculta una columna. Cualquiera de los valores de la propiedad AnchuraDeColumnas (ColumnWidths) o todos ellos pueden estar en blanco. Un valor en blanco se crea mediante la introducción de un separador de lista sin un valor precedente. Los valores en blanco tienen como resultado que Microsoft Access establezca automáticamente un ancho de columna predeterminado, que varía según el número de columnas y el ancho del cuadro combinado o el cuadro de lista.

Nota   En un cuadro combinado, la primera columna visible se muestra en la parte de cuadro de texto del control.

Puede establecer la propiedad AnchuraDeColumnas (ColumnWidths) en la hoja de propiedades del control, una macro o Visual Basic.

Para los campos de tabla, puede establecer esta propiedad en la ficha Búsqueda de la sección Propiedades del campo de la vista Diseño de la tabla para los campos cuya propiedad Mostrar control esté establecida a Cuadro combinado o Cuadro de lista.

Sugerencia   Microsoft Access establece la propiedad AnchuraDeColumnas (ColumnWidths) automáticamente al seleccionar Asistente para búsquedas como el tipo de datos de un campo en la vista Diseño de la tabla.

En Visual Basic, utilice una expresión de cadena para establecer los valores de ancho de columna en twips. Los anchos de columna se separan mediante caracteres de punto y coma. Para especificar una unidad de medida diferente, incluya la unidad de medida (cm o pda). Por ejemplo, la siguiente expresión de cadena especifica los tres anchos de columna en centímetros.

"6 cm;0;6 cm"

Comentarios

Si deja el valor de la propiedad AnchuraDeColumnas (ColumnWidths) en blanco, Microsoft Access establece el ancho de cada columna como el ancho global del cuadro de lista o el cuadro combinado dividido por el número de columnas.

Si los anchos de columna establecidos son demasiado anchos para mostrarse totalmente dentro del cuadro combinado o el cuadro de lista, las columnas situadas más a la derecha se ocultan y aparece una barra de desplazamiento horizontal.

Si especifica el ancho de algunas columnas pero deja en blanco los valores de otras columnas, Microsoft Access divide el ancho restante por el número de columnas para las que no se ha especificado un ancho. El ancho de columna mínimo calculado es 1.440 twips (1 pulgada).

Por ejemplo, los valores siguientes se aplican a un cuadro de lista de 4 pulgadas con tres columnas.

Valor	Descripción
1,5 pda;0;2,5 pda	La primera columna tiene 1,5 pulgadas, la segunda columna está oculta y la tercera columna tiene 2,5 pulgadas.
2 pda;;2 pda	La primera columna tiene 2 pulgadas, la segunda columna tiene 1 pulgada (valor predeterminado) y la tercera columna tiene 2 pulgadas. Dado que sólo queda visible la mitad de la tercera columna, aparece una barra de desplazamiento horizontal.
(En blanco)	Las tres columnas tienen el mismo ancho (1,33 pulgadas).
Nota   Esta propiedad es diferente de la propiedad ColumnWidth, que establece el ancho de una columna especificada en la hoja de datos.


Propiedad LimitarALista (LimitToList)

Puede utilizar la propiedad LimitarALista (LimitToList) para limitar los valores de un cuadro combinado a los elementos de la lista.

Valores

La propiedad LimitarALista (LimitToList) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	Si el usuario selecciona un elemento de la lista del cuadro combinado o introduce texto que coincide con un elemento de la lista, Microsoft Access lo acepta. El texto introducido que no coincide con un elemento de la lista no se acepta; en este caso, el usuario debe volver a escribir el texto, seleccionar un elemento de la lista, presionar ESC o hacer clic en Deshacer en el menú Edición.	True (–1)
No	(Valor predeterminado) Microsoft Access acepta cualquier texto conforme con la propiedad ReglaDeValidación (ValidationRule).	False (0)
Puede establecer la propiedad LimitarALista (LimitToList) mediante la hoja de propiedades del cuadro combinado, una macro o Visual Basic.

Para los campos de tabla, puede establecer esta propiedad en la ficha Búsqueda de la sección Propiedades del campo de la vista Diseño de la tabla para los campos cuya propiedad Mostrar control esté establecida a Cuadro combinado.

Sugerencia   Microsoft Access establece la propiedad LimitarALista (LimitToList) automáticamente al seleccionar Asistente para búsquedas como tipo de datos para un campo en la vista Diseño de la tabla.

Comentarios

Cuando la propiedad LimitarALista (LimitToList) de un cuadro combinado dependiente está establecida a No, puede introducir en el cuadro combinado un valor que no esté incluido en la lista. Microsoft Access almacena el nuevo valor en la tabla o consulta base del formulario (en el campo especificado en la propiedad OrigenDelControl (ControlSource) del cuadro combinado), no en la tabla o consulta establecida para el cuadro combinado por la propiedad OrigenDeLaFila (RowSource). Para hacer que los valores recién introducidos aparezcan en el cuadro combinado, debe agregar el valor nuevo a la tabla o consulta establecida en la propiedad OrigenDeLaFila (RowSource) mediante una macro o un procedimiento de evento de Visual Basic que se ejecute cuando se produzca el evento NotInList.

Nota   Si establece la propiedad ColumnaDependiente (BoundColumn) del cuadro combinado a cualquier columna que no sea la primera columna visible (o si establece ColumnaDependiente (BoundColumn) a 0), la propiedad LimitarALista (LimitToList) se establece automáticamente a Sí.

El establecimiento de la propiedad LimitarALista (LimitToList) y la propiedad ExpansiónAutomática (AutoExpand) a Sí permite a Microsoft Access encontrar los valores de la lista que coinciden con los caracteres introducidos en la parte del cuadro de texto del cuadro combinado y restringir las entradas de datos sólo a esos valores.

Cuando la propiedad LimitarALista (LimitToList) está establecida a Sí y se hace clic sobre la flecha del cuadro combinado, Microsoft Access selecciona los valores de la lista que coinciden con los caracteres introducidos en la parte de texto del cuadro combinado, incluso aunque la propiedad ExpansiónAutomática (AutoExpand) esté establecida a No. Si el usuario presiona ENTRAR o se desplaza a otro control o registro, el valor seleccionado aparece en el cuadro combinado.

En Microsoft Access 97, los cuadros combinados aceptan valores Null cuando la propiedad LimitarALista (LimitToList) se ha establecido a Sí o True, aunque la lista no contenga valores Null. Si desea evitar que los usuarios introduzcan valores Null en un cuadro combinado, establezca a Sí la propiedad Requerido (Required) del campo en la tabla del que depende el cuadro combinado


Propiedad ExpansiónAutomática (AutoExpand)

Puede utilizar la propiedad ExpansiónAutomática (AutoExpand) para especificar si Microsoft Access debe rellenar automáticamente la parte de cuadro de texto de un cuadro combinado con un valor de la lista del cuadro combinado que coincida con los caracteres introducidos a medida que se escriben en el cuadro combinado. Esto le permite introducir rápidamente un valor existente en un cuadro combinado sin mostrar la parte de cuadro de lista del cuadro combinado.

Valores

La propiedad ExpansiónAutomática (AutoExpand) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	(Valor predeterminado) Microsoft Access rellena el cuadro combinado a partir de la lista con el primer valor que coincide con el primer carácter introducido. A medida que escribe más caracteres, Microsoft Access cambia el valor mostrado para que coincida con todos los caracteres escritos.	True (–1)
No	Debe seleccionar un valor de la lista o escribir el valor completo.	False (0)
Puede establecer la propiedad ExpansiónAutomática (AutoExpand) mediante la hoja de propiedades del cuadro combinado, una macro o Visual Basic.

Comentarios

Cuando se escriben caracteres en la parte de cuadro de texto de un cuadro combinado, Microsoft Access busca los valores en la lista para encontrar aquéllos que coinciden con los caracteres escritos. Si la propiedad ExpansiónAutomática (AutoExpand) está establecida a Sí, Microsoft Access muestra automáticamente el primer valor base que coincide con los caracteres introducidos hasta entonces.

Cuando la propiedad LimitarALista (LimitToList) está establecida a Sí y la lista del cuadro combinado está desplegada, Microsoft Access selecciona los valores coincidentes en la lista a medida que el usuario escribe caracteres en la parte de cuadro de texto del cuadro combinado, incluso aunque la propiedad ExpansiónAutomática (AutoExpand) esté establecida a No. Si el usuario presiona ENTRAR o se desplaza a otro control o registro, el valor seleccionado aparece en el cuadro combinado.


Propiedad ListCount

Puede utilizar la propiedad ListCount para determinar el número de filas de un cuadro de lista o de la parte de cuadro de lista de un control combinado.

Valores

Microsoft Access establece la propiedad ListCount al número de filas del cuadro de lista o de la parte de cuadro de lista del cuadro combinado. El valor de la propiedad ListCount es de sólo lectura y no puede ser establecido por el usuario.

Esta propiedad está disponible exclusivamente mediante una macro o Visual Basic. Esta propiedad sólo se puede leer en la vista Formulario y la vista Hoja de datos.

Comentarios

El valor de la propiedad ListCount contiene el número total de filas de la lista del cuadro combinado o el cuadro de lista, según determinan las propiedades OrigenDeLaFila (RowSource) y TipoDeOrigenDeLaFila (RowSourceType) del control. Si el control está basado en una tabla o una consulta (la propiedad TipoDeOrigenDeLaFila (RowSourceType) está establecida a Tabla/Consulta y la propiedad OrigenDeLaFila (RowSource) está establecida a una tabla o una consulta determinada), el valor de la propiedad ListCount contiene el número de registros del conjunto de resultados de la tabla o la consulta. Si la propiedad TipoDeOrigenDeLaFila (RowSourceType) está establecida a Lista de valores, el valor de la propiedad ListCount contiene el número de filas de la lista de valores especificada en la propiedad OrigenDeLaFila (RowSource) (esto depende de la lista de valores y del número de columnas del cuadro de lista o de la lista del cuadro combinado, según establece la propiedad NúmeroDeColumnas (ColumnCount)).

Si establece la propiedad EncabezadosDeColumna (ColumnHeads) a Sí, la fila de encabezados de columna se incluye en el número de filas devuelto por la propiedad ListCount. Para los cuadros combinados y los cuadros de lista basados en una tabla o una consulta, al agregar encabezados de columna se agrega una fila adicional. Para los cuadros combinados y los cuadros de lista basados en una lista de valores, al agregar encabezados de columna no se modifica el número de filas (la primera fila de valores se convierte en los encabezados de columna).

Puede utilizar la propiedad ListCount con la propiedad FilasEnLista (ListRows) para especificar cuántas filas desea mostrar en la parte de cuadro de lista de un cuadro combinado.


Ejemplo de las propiedades ListCount y FilasEnLista (ListRows)

Este ejemplo utiliza la propiedad ListCount para hallar el número de filas de la parte de cuadro de lista del cuadro combinado ListaClientes de un formulario Clientes. A continuación, establece la propiedad FilasEnLista (ListRows) para que muestre un número de filas especificado en la lista.

Sub TamañoListaClientes()

Dim ControlLista As Control

Set ControlLista = Forms!Clientes!ListaClientes

With ControlLista

If .ListCount < 8 Then

.ListRows = .ListCount

Else

.ListRows = 8

End If

End With

End Sub


Propiedad ListIndex

Puede utilizar la propiedad ListIndex para determinar qué elemento está seleccionado en un cuadro de lista o un cuadro combinado.

Valores

La propiedad ListIndex es un número entero desde 0 hasta el número total de elementos de un cuadro de lista o un cuadro combinado menos 1. Microsoft Access establece el valor de la propiedad ListIndex cuando un elemento está seleccionado en un cuadro de lista o en la parte de cuadro de lista de un cuadro combinado. El valor de la propiedad ListIndex del primer elemento de una lista es 0, el valor del segundo elemento es 1, etc.

Esta propiedad está disponible exclusivamente mediante una macro o Visual Basic. Puede leer esta propiedad solamente en la vista Formulario y en la vista Hoja de datos. Esta propiedad es de sólo lectura y no está disponible en las demás vistas.

Comentarios

El valor de la propiedad ListIndex también está disponible estableciendo la propiedad ColumnaDependiente (BoundColumn) a 0 para un cuadro combinado o un cuadro de lista. Si la propiedad ColumnaDependiente (BoundColumn) está establecida a 0, el campo de la tabla base del que depende el cuadro combinado o el cuadro de lista contendrá el mismo valor que la propiedad ListIndex.

Los cuadros de lista también tienen una propiedad SelecciónMúltiple (MultiSelect) que permite al usuario seleccionar varios elementos del control. Cuando se realizan varias selecciones en un cuadro de lista, puede determinar qué elementos están seleccionados mediante la propiedad Selected del control. La propiedad Selected es una matriz de valores del 0 al valor de la propiedad ListCount menos 1. Para cada elemento del cuadro de lista, la propiedad Selected será True (–1) si el elemento está seleccionado y False (0) si no está seleccionado.

La colección ItemsSelected también proporciona un modo de tener acceso a los datos de las filas seleccionadas de un cuadro de lista o un cuadro combinado.


Propiedad FilasEnLista (ListRows)

Puede utilizar la propiedad FilasEnLista (ListRows) para establecer el número máximo de filas que se mostrarán en la parte de cuadro de lista de un cuadro combinado.

Valores

La propiedad FilasEnLista (ListRows) contiene un número entero que indica el número máximo de filas que se pueden mostrar. El valor predeterminado es 8. El valor de la propiedad FilasEnLista (ListRows) debe estar entre 1 y 255.

Puede establecer esta propiedad mediante la hoja de propiedades del cuadro combinado, una macro o Visual Basic.

Para los campos de tabla, puede establecer esta propiedad en la ficha Búsqueda de la sección Propiedades del campo de la vista Diseño de la tabla para los campos cuya propiedad Mostrar control esté establecida a Cuadro combinado.

Sugerencia   Microsoft Access establece la propiedad FilasEnLista (ListRows) automáticamente al seleccionar Asistente para búsquedas como tipo de datos de un campo en la vista Diseño de la tabla.

En Visual Basic, utilice una expresión numérica para establecer el valor de esta propiedad.

Puede establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado de un cuadro combinado o el método DefaultControl de Visual Basic.

Comentarios

Si el número real de filas sobrepasa el número especificado por el valor de la propiedad FilasEnLista (ListRows), aparece una barra de desplazamiento vertical en la parte de cuadro de lista del cuadro combinado.


Propiedad AnchuraDeLaLista (ListWidth)

Puede utilizar la propiedad AnchuraDeLaLista (ListWidth) para establecer el ancho de la parte de cuadro de lista de un cuadro combinado.

Valores

La propiedad AnchuraDeLaLista (ListWidth) contiene un valor que especifica el ancho de la parte de cuadro de lista de un cuadro combinado en pulgadas o centímetros, dependiendo del sistema de medición (EE.UU o Métrico) seleccionado en el cuadro Sistema de medida de la ficha Número del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. Para utilizar una unidad distinta de la unidad predeterminada, incluya un indicador de medida, como por ejemplo cm o pda. El valor predeterminado (Auto) establece el ancho de la parte de cuadro de lista del cuadro combinado de modo que sea igual a la del cuadro combinado.

Puede establecer la propiedad AnchuraDeLaLista (ListWidth) mediante la hoja de propiedades del cuadro combinado, una macro o Visual Basic.

Para los campos de tabla, puede establecer esta propiedad en la ficha Búsqueda de la sección Propiedades del campo de la vista Diseño de la tabla para los campos cuya propiedad Mostrar control esté establecida a Cuadro combinado.

Sugerencia   Microsoft Access establece la propiedad AnchuraDeLaLista (ListWidth) automáticamente al seleccionar Asistente para búsquedas como tipo de datos para un campo en la vista Diseño de la tabla.

En Visual Basic, utilice una expresión numérica para establecer el valor de esta propiedad. La unidad de medida predeterminada en Visual Basic es twips.

También puede establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado del cuadro combinado o el método DefaultControl de Visual Basic.

Comentarios

La parte de lista del cuadro combinado puede ser más ancha que el cuadro combinado, pero no puede ser más estrecha.

Si desea mostrar una lista de varias columnas, introduzca un valor que haga que el cuadro de lista sea lo suficientemente ancho como para mostrar todas las columnas.

Sugerencia   Al diseñar cuadros combinados, asegúrese de dejar suficiente espacio para mostrar los datos y para que Microsoft Access inserte una barra de desplazamiento vertical.


Propiedad Texto (Text)

Puede utilizar la propiedad Texto (Text) para establecer o devolver el texto contenido en un cuadro de texto o en la parte de cuadro de texto de un cuadro combinado.

Valores

Puede establecer la propiedad Texto (Text) al texto que desea mostrar en el control. También puede utilizar la propiedad Texto (Text) para leer el texto contenido actualmente en el control.

Puede establecer o leer esta propiedad solamente mediante una macro o Visual Basic.

Nota   Para establecer o retornar la propiedad Texto (Text) de un control, el control debe tener el enfoque; de lo contrario se producirá un error. Para mover el enfoque a un control, puede utilizar el método SetFocus o la acción IrAControl.

Comentarios

Mientras el control tiene el enfoque, la propiedad Texto (Text) almacena los datos de texto contenidos actualmente en el control; la propiedad Valor (Value) contiene los últimos datos guardados para el control. Al desplazar el enfoque a otro control, los datos del control se actualizan y la propiedad Valor (Value) se establece a este nuevo valor. El valor de la propiedad Texto (Text) deja entonces de estar disponible hasta que el control recibe de nuevo el enfoque. Si utiliza el comando Guardar registro del menú Registros para guardar los datos del control sin mover el enfoque, los valores de la propiedad Texto (Text) y la propiedad Valor (Value) serán iguales.


Ejemplo de la propiedad Texto (Text)

Este ejemplo utiliza la propiedad Texto (Text) para habilitar un botón Siguiente denominado btnSiguiente siempre que el usuario escribe texto en un cuadro de texto denominado txtNombre. Siempre que el cuadro de texto esté en blanco, el botón Siguiente estará desactivado.

Sub txtNombre_Change()

btnSiguiente.Enabled = Len(Me!txtNombre.Text & "")<>0

End Sub


Propiedad TabulaciónAutomática (AutoTab)

Puede usar la propiedad TabulaciónAutomática (AutoTab) para especificar si ha de realizarse una tabulación automática cuando se escribe el último carácter permitido por la máscara de entrada de un control de cuadro de texto. Una tabulación automática mueve el enfoque al siguiente control en el orden de tabulación del formulario.

Valores

Los valores de la propiedad TabulaciónAutomática (AutoTab) son los siguientes.

Valor	Descripción	Visual Basic
Sí	Genera una tabulación cuando se escribe el último carácter permitido en un cuadro de texto.	True (–1)
No	(Predeterminado) No genera una tabulación cuando se escribe el último carácter permitido en un cuadro de texto.	False (0)
Puede establecer esta propiedad usando la hoja de propiedades de un formulario, una macro, o Visual Basic.

También puede establecer el valor predeterminado para esta propiedad usando el estilo predeterminado del control o el método DefaultControl en Visual Basic.

La propiedad TabulaciónAutomática (AutoTab) tiene efecto tanto en la vista Formulario como en la vista Hoja de datos.

Comentarios

Se crea una máscara de entrada para un control usando la propiedad MáscaraDeEntrada (InputMask).

También puede crear una máscara de entrada para un control de cuadro de texto dependiente de un campo estableciendo la propiedad MáscaraDeEntrada (InputMask) para el campo en la tabla o consulta base del formulario. Si el campo se arrastra a un formulario desde la lista de campos, la máscara de entrada del campo se incorpora al control del cuadro de texto.

Puede usar la propiedad TabulaciónAutomática (AutoTab) si tiene un cuadro de texto en un formulario en el cual normalmente escribe el número máximo de caracteres para cada registro. En cuanto se introduzca el número máximo de caracteres, el enfoque cambiará automáticamente al siguiente control en el orden de tabulación. Por ejemplo, puede usar esta propiedad para un campo TipoDeCategoría que debe tener siempre una longitud de cinco caracteres.


Propiedades Activado (Enabled) y Bloqueado (Locked)

•	La propiedad Activado (Enabled) especifica si un control puede tener el enfoque en la vista Formulario.

•	La propiedad Bloqueado (Locked) especifica si se pueden editar los datos de un control en la vista Formulario.

Valores

Los valores de la propiedad Activado (Enabled) son las siguientes.

Valor	Descripción	Visual Basic
Sí	(Predeterminado para todos los controles excepto los marcos de objeto independientes) El control puede tener el enfoque. Si el control es un marco de objeto independiente, haciendo doble clic en él se ejecuta el verbo principal del control. Por ejemplo, un marco de objeto independiente podría reproducir un objeto de sonido incrustado.	True (–1)
No	(Predeterminado para marcos de objeto independientes) El control no puede tener el enfoque y aparece atenuado. Si el control es un grupo de opciones, ni el grupo de opciones ni los controles dentro del grupo de opciones pueden tener el enfoque.	False (0)
Los valores de la propiedad Bloqueado (Locked) son los siguientes.

Valor	Descripción	Visual Basic
Sí	(Predeterminado para marcos de objeto independientes) El control funciona normalmente pero no permite modificar, agregar o eliminar datos.	True
No	(Predeterminado para todos los controles excepto marcos de objeto independientes) El control funciona normalmente y permite modificar, agregar o eliminar datos.	False
Puede establecer estas propiedad utilizando la hoja de propiedades del control, una macro, o en Visual Basic.

Comentarios

Use la propiedad Activado (Enabled) para activar y desactivar controles. Por ejemplo, en la vista Formulario puede desactivar un botón de comando hasta que haya cambiado los datos en un control de cuadro de texto. Puede usar entonces el evento AfterUpdate del control para llamar a un procedimiento de evento o una macro para activar el botón de comando.

Use la propiedad Bloqueado (Locked) para proteger los datos en un campo haciéndolos de sólo lectura. Por ejemplo, podría desear que un control sólo mostrase información, sin permitir su modificación, o podría desear bloquear un control hasta que se cumpliese una condición específica.

Puede combinar los valores de las propiedades Activado (Enabled) y Bloqueado (Locked) para lograr los siguientes efectos.

Activado (Enabled)	Bloqueado (Locked)	Efecto
Sí	Sí	El control puede tener el enfoque. Los datos se muestran normalmente y se pueden copiar pero no editar.
Sí	No	El control puede tener el enfoque. Los datos se muestran normalmente y se pueden copiar y editar.
No	Sí	El control no puede tener el enfoque. Los datos se muestran normalmente pero no se pueden copiar ni editar.
No	No	El control no puede tener el enfoque. El control y los datos están desactivados (atenuados).
La propiedad PuntoDeTabulación (TabStop) se puede combinar con la propiedad Activado (Enabled) para evitar el uso de la tecla TAB para seleccionar un botón de comando, mientras se sigue permitiendo el uso del botón haciendo clic en él. Al establecer "No" en la propiedad PuntoDeTabulación (TabStop) se hace que el botón de comando no esté en el orden de tabulación. Sin embargo, si la propiedad Activado (Enabled) está establecida a "Sí", podrá hacer clic en el botón de comando.

Para permitir modificaciones en un objeto incrustado o vinculado de un marco de objeto independiente, debe establecer "Sí" en la propiedad Activado (Enabled) de marco de objeto independiente y "No" en la propiedad Bloqueado (Locked).


Ejemplo de las propiedades Activado (Enabled) y Bloqueado (Locked)

El siguiente ejemplo alterna la propiedad Activado (Enabled) de un botón de comando y las propiedades Activado (Enabled) y Bloqueado (Locked) de un control dependiendo de el tipo de empleado mostrado en el registro actual. Si el empleado es un director entonces el botón DetallesDeSalario está activado y el control InformaciónPersonal está activado y no está bloqueado.

Sub Form_Actual ()

If Me!TipoDeEmpleado = "Director" Then

Me!DetallesDeSalario.Enabled = True

Me!InformaciónPersonal.Enabled = True

Me!InformaciónPersonal.Locked = False

Else

Me!DetallesDeSalario.Enabled = False

Me!InformaciónPersonal.Enabled = False

Me!InformaciónPersonal.Locked = True

End If

End Sub


Propiedades Activado y Bloqueado (Enabled y Locked) - Se aplican a
Propiedades Activado y Bloqueado (Enabled y Locked) — Se aplican a

Propiedad Activado (Enabled)

Propiedad Bloqueado (Locked)


Propiedad ComportamientoDeLaTeclaEntrar (EnterKeyBehavior)

Puede usar la propiedad ComportamientoDeLaTeclaEntrar (EnterKeyBehavior) para especificar qué sucederá cuando presione ENTRAR en un control de cuadro de texto en la vista Formulario o la vista Hoja de datos. Por ejemplo, puede usar esta propiedad si tiene un control dependiente de un campo Memo en una tabla para hacer más fácil la escritura de un texto de múltiples líneas. Si no establece Nueva línea en campo en esta propiedad, deberá presionar CTRL+ENTRAR para escribir una nueva línea en el cuadro de texto.

Valores

Los valores de la propiedad ComportamientoDeLaTeclaEntrar (EnterKeyBehavior) son los siguientes.

Valor	Descripción	Visual Basic
Predeterminado	(Predeterminado) Microsoft Access usa el resultado especificado bajo "Mover después de Entrar" en la ficha Teclado del cuadro de diálogo Opciones disponible al hacer clic en Opciones del menú Herramientas. Para obtener detalles, vea la sección Comentarios.	False (0)
Nueva línea en campo	Al presionar ENTRAR en el control se crea una nueva línea en el control de forma que pueda escribir texto adicional.	True (–1)
Puede establecer esta propiedad utilizando la hoja de propiedades del formulario, en una macro, o en Visual Basic.

También puede establecer el valor predeterminado para esta propiedad usando el estilo predeterminado del control o el método DefaultControl en Visual Basic.

Comentarios

Las siguientes opciones están disponibles bajo Movimiento después de Entrar en la ficha Teclado del cuadro de diálogo Opciones.

Valor	Descripción
Sin movimiento	Presionar ENTRAR no tiene ningún efecto.
Siguiente campo	Presionar ENTRAR mueve el punto de inserción al siguiente control o campo en el orden de tabulación del formulario u hoja de datos.
Siguiente registro	Presionar ENTRAR mueve el punto de inserción al primer control o campo en el siguiente registro del formulario o de la hoja de datos.


Propiedad BloqueosDelRegistro (RecordLocks)

Puede usar la propiedad BloqueosDelRegistro (RecordLocks) para determinar cómo se bloquean los registros y qué sucede cuando dos usuarios intentan editar el mismo registro a la vez. Cuando edita un registro, Microsoft Access puede bloquear automáticamente ese registro para evitar que otros usuarios lo cambien antes de que usted haya finalizado.

•	Formularios. Especifica cómo se bloquean los registros en la tabla o consulta base cuando se actualizan datos en una base de datos multiusuario.

•	Informes. Especifica si los registros de la tabla o consulta base se bloquean o no mientras se hace la vista preliminar  o se imprime un informe.

•	Consultas. Especifica si los registros de una consulta (normalmente una consulta de acciones en una base de datos multiusuario) se bloquean o no mientras se ejecuta la consulta.

Valores

Los valores de la propiedad BloqueosDelRegistro (RecordLocks) son las siguientes.

Valor	Descripción	Visual Basic
Sin bloquear	(Predeterminado ) En los formularios, dos o más usuarios pueden editar simultáneamente el mismo registro. Esto se llama también bloqueo "optimista". Si dos usuarios intentan guardar cambios en el mismo registro, Microsoft Access muestra un mensaje al usuario que intenta guardar el registro en segundo lugar. Este usuario puede entonces descartar el registro, copiar el registro al Portapapeles, o reemplazar los cambios hechos por el otro usuario. Este valor se usa típicamente en formularios de sólo lectura o en bases de datos de usuario único. También se usa en bases de datos multiusuario para permitir que más de un usuario sea capaz de hacer cambios en el mismo registro al mismo tiempo. En informes, los registros no se bloquean cuando se hace la vista preliminar o se imprime el informe. En consultas, los registros no se bloquean cuando se ejecuta la consulta.	0
Todos los registros	Todos los registros en la tabla o consulta base se bloquean mientras el formulario está abierto en la vista Formulario o la vista Hoja de datos, mientras se hace vista preliminar o se imprime el informe, o mientras se ejecuta la consulta. Aunque los usuarios pueden leer los registros, ninguno de ellos puede editar, agregar o eliminar ningún registro hasta que se cierre el formulario, se finalice la impresión del informe, o haya finalizado la ejecución de la consulta	1
Registro editado	(Sólo formularios y consultas) Una página de registros se bloquea en cuanto cualquier usuario comienza a editar cualquier campo en el registro y permanece bloqueada hasta que el usuario se mueve a otro registro. Consecuentemente, un registro sólo puede ser editado a la vez por una persona. Esto también se llama bloqueo "pesimista".	2
Puede establecer esta propiedad usando la hoja de propiedades del formulario, una macro, o Visual Basic.

Comentarios

Puede usar el valor Sin bloquear para formularios si sólo una persona usa las tablas o consultas bases o hace todos los cambios a los datos.

En una base de datos multiusuario, puede usar el valor Sin Bloquear si desea usar bloqueo optimista y advertir a los usuarios que intenten editar el mismo registro en un formulario. Puede usar el valor Registro editado si desea evitar que dos o más usuarios editen datos al mismo tiempo.

Puede usar el valor Todos los registros cuando necesite asegurarse de que no se hacen cambios a los datos después de que comience la vista preliminar o la impresión de un informe o la ejecución de una consulta de datos anexados, de eliminación, de creación de tabla, o de actualización.

En la vista Formulario o la vista Hoja de datos, cada registro bloqueado tiene un indicador de bloqueo  [image] en su selector de registro.

Sugerencia   Para cambiar el valor predeterminado de la propiedad BloqueosDelRegistro (RecordLocks) para los formularios, elija Opciones del menú Herramientas. Haga clic en la ficha Avanzadas en el cuadro de diálogo Opciones y seleccione la opción deseada bajo Bloqueo predeterminado de registros.

Los datos en un formulario, informe o consulta de una base de datos Conectividad Abierta de Bases de Datos (ODBC) se tratan como si se hubiese elegido el valor Sin bloquear independientemente del valor de la propiedad BloqueosDelRegistro (RecordLocks).


Propiedad TipoRecordset (RecordsetType)

Puede utilizar la propiedad TipoRecordset (RecordsetType) para especificar el tipo de recordset que se hace disponible para un formulario. Por ejemplo si no desea que se puedan modificar los datos de controles dependientes cuando un formulario está en la vista Formulario o en la vista Hoja de datos, puede establecer la propiedad TipoRecordset (RecordsetType) a Snapshot.

Valores

La propiedad TipoRecordset (RecordsetType) usa los siguientes valores.

Valor	Descripción	Visual Basic
Dynaset	(Predeterminado) Puede editar controles dependientes basados en una tabla o en varias tablas con relaciones uno-a-uno. En controles vinculados a campos basados en tablas con relaciones de uno a varios, no puede editar datos del campo combinación del lado "uno" de la relación, a menos que esté activada la actualización en cascada entre las tablas. Para más información, vea el tema que explica cuándo puede actualizar registros de una consulta.	0
Dynaset (Actualizaciones no coherentes)	Se pueden editar todas las tablas y los controles vinculados a sus campos.	1
Snapshot	Imposible editar las tablas o sus controles dependientes.	2
Puede establecer esta propiedad usando la hoja de propiedades del objeto, una macro, o Visual Basic.

Comentarios

Puede crear formularios basados en varias tablas bases con campos vinculados a los controles del formulario. Dependiendo del valor de la propiedad TipoRecordset (RecordsetType), podrá limitar qué control dependiente se puede editar.

Además de la edición del control proporcionada por la propiedad TipoRecordset (RecordsetType), cada control del formulario tiene una propiedad Bloqueado (Locked) que puede utilizar para especificar si el control y los datos subyacentes se pueden editar. Si la propiedad Bloqueado (Locked) se establece a Sí, no se podrán editar los datos.


Ejemplo de la propiedad TipoRecordset (RecordsetType)

En el siguiente ejemplo, se podrán editar los datos sólo cuando la identificación del usuario sea Admin. Este ejemplo de código establece la propiedad TipoRecordset (RecordsetType) a Snapshot si la variable pública gstrUserID no es ADMIN.

Sub Form_Open(Cancel As Integer)

Const conSnapshot = 2

If gstrUserID <> "ADMIN" Then

Forms!Employees.RecordsetType = conSnapshot

End If

End Sub


Propiedad Valor (Value)

Puede usar la propiedad Valor (Value) para determinar o especificar si un control está seleccionado, el valor o la opción seleccionada dentro del control, o el texto contenido en un control de cuadro de texto.

•	Controles casilla de verificación, botón de opción y botón de alternar. Determina o especifica si el control está o no seleccionado.

•	Controles cuadro combinado, cuadro de lista y grupo de opciones. Determina o especifica qué valor u opción del control está seleccionada.

•	Controles de cuadro de texto. Determina o especifica el texto en el cuadro de texto.

•	Control ficha. Determina o especifica el objeto Página (Page) seleccionado.

Valores

Los valores de la propiedad Valor (Value) son los siguientes dependiendo del control especificado.

Control	Valor	Descripción	Visual Basic
Casilla de verificación	Verdadero Falso	La casilla de verificación está seleccionada. (Predeterminado) La casilla de verificación no está seleccionada.	True (–1) False (0)
Cuadro combinado	El texto en la parte de cuadro de texto del control	Puede o no ser el mismo que el valor de la propiedad Texto (Text) del control. El valor actual de la propiedad Texto (Text) es lo que se muestra en la parte de texto del cuadro combinado; en la propiedad Valor (Value) se establece el valor de la propiedad Texto (Text) sólo después de que este texto se haya guardado.
Cuadro de lista	El valor del elemento del cuadro de lista	El valor en la columna dependiente para el elemento seleccionado en la lista.
Botón de opción	Verdadero Falso	El botón de opción está seleccionado. (Predeterminado) El botón de opción no está seleccionado.	True False
Grupo de opciones	El valor de la propiedad ValorDeLaOpción (OptionValue)	El valor de la propiedad ValorDeLaOpción (OptionValue) para el control seleccionado del grupo.
Cuadro de texto	El valor de la propiedad Texto (Text) del control	La propiedad Texto (Text) devuelve la cadena con formato. La propiedad Texto (Text) puede ser distinta de la propiedad Valor (Value) para un control de cuadro de texto. La propiedad Texto (Text) son los contenidos actuales del control. La propiedad Valor (Value) es el valor guardado del control de cuadro de texto. La propiedad Texto (Text) es siempre la actual mientras el control tenga el enfoque.
Botón de alternar	Verdadero Falso	El botón de alternar está presionado. El botón de alternar no está presionado	True False
Control ficha	[Un valor Integer que representa el número de índice del objeto Página (Page) seleccionado]	La propiedad Valor (Value) del control contiene el número de índice del objeto Página (Page) actual. Hay un objeto Página (Page) para cada ficha en un control ficha. El primer objeto Página (Page) tiene siempre un número de índice igual a 0, el segundo tiene un número de índice igual a 1, y así sucesivamente.
Marco de objeto dependienteo control gráfico dependiente		La propiedad Valor (Value) para un marco de objeto dependiente o para un control gráfico dependiente se establece al valor del campo del que depende el control. Puesto que normalmente estos campos contiene objetos OLE u objetos gráfico, que están guardados como datos binarios, este valor normalmente no tiene importancia.
Control ActiveX		Algunos controles ActiveX soportan la propiedad Valor (Value). Por ejemplo, el valor de la propiedad Valor (Value) para un control Calendar es la fecha seleccionada en el control. Si desea más información, vea la documentación para cada control ActiveX.
Sólo puede establecer esta propiedad usando una macro o Visual Basic.

Comentarios

La propiedad Valor (Value) devuelve o establece la propiedad predeterminada de un control, que es la propiedad que se supone cuando no se especifica explícitamente un nombre de propiedad. En el siguiente ejemplo, como el valor predeterminado del cuadro de texto es el valor de la propiedad Texto (Text), se puede referir al valor de su propiedad Texto (Text) sin especificar explícitamente el nombre de la propiedad:

Forms!frmClientes!txtApellido = "Martínez"

Esto significa que las dos instrucciones siguientes son equivalentes.

Forms!frmClientes!optCreditoAprobado.Value = True

Forms!frmClientes!optCreditoAprobado = True

Nota   La propiedad Valor (Value) no es la misma que la propiedad ValorPredeterminado (DefaultValue), que especifica el valor que se asigna a una propiedad cuando se crea un nuevo registro.


Ejemplo de la propiedad Valor (Value)

Este ejemplo muestra como puede llamar a uno u otro procedimiento, dependiendo de si la casilla de verificación "Crédito" del formulario Clientes está o no seleccionada.

Sub TipoDePago ()

If Forms!Clientes!Credito.Value = False Then

ProcesoContado

ElseIf Forms!Clientes!Credito.Value = True Then

ProcesoCredito

End If

End Sub


Propiedad ValorAnterior (OldValue)

La propiedad ValorAnterior (OldValue) se puede utilizar para determinar el valor sin editar de un control dependiente.

Valores

La propiedad ValorAnterior (OldValue) contiene los datos sin editar de un control dependiente y es de sólo lectura en todas las vistas.

Sólo se puede tener acceso a esta propiedad utilizando una macro o Visual Basic.

Se puede asignar la propiedad ValorAnterior (OldValue) a una variable utilizando la sintaxis siguiente:

ValorOriginal = Forms!Clientes!CantidadPagada.OldValue

Comentarios

Microsoft Access utiliza la propiedad ValorAnterior (OldValue) para almacenar el valor original de un control dependiente. Cuando se edita un control dependiente en un formulario, los cambios no se guardan hasta ir a otro registro. La propiedad ValorAnterior (OldValue) contiene la versión sin editar de los datos subyacentes.

Puede proporcionar su propia capacidad de deshacer asignando el valor de la propiedad ValorAnterior (OldValue) a un control. El ejemplo siguiente muestra cómo puede deshacer los cambios efectuados en los controles cuadro de texto de un formulario:

Sub btnDeshacer_Click()

Dim ctlTextbox As Control

For Each ctlTextbox in Me.Controls

If ctlTextbox.ControlType = acTextBox Then

ctlTextbox.Value = ctl.OldValue

End If

Next ctl

End Sub

Si el control no ha sido editado, este código no surte ningún efecto. Al ir a otro registro, se actualiza el registro de origen, por tanto el valor actual y la propiedad ValorAnterior (OldValue) serán lo mismo.

El valor de la propiedad ValorAnterior (OldValue) es del mismo tipo de datos que el campo del que depende el control.


Ejemplo de la propiedad ValorAnterior (OldValue)

En el ejemplo siguiente se verifica si los nuevos datos introducidos en un campo están dentro del 10 por ciento del valor de los datos originales. Si el cambio es mayor que el 10 por ciento, la propiedad ValorAnterior (OldValue) se utiliza para restaurar el valor original. Este procedimiento sólo se puede llamar desde el evento BeforeUpdate del control que contiene los datos que se desea validar.

Sub Validate_Field()

Dim curNuevoValor As Currency

Dim curValorOriginal As Currency

Dim curCambio As Currency, txtMsj As String

curNuevoValor = Forms!Productos!PrecioUnidad

curValorOriginal = Forms!Productos!PrecioUnidad.OldValue

curCambio = Abs(curNuevoValor - curValorOriginal)

If curCambio > (curValorOriginal * .1) Then

txtMsj = "El cambio es mayor que el 10% del precio unitario original." _

& "Restaurando el precio unitario original."

CuadroMsj txtMsj, vbExclamation, "Cambio no válido"

Forms!Productos!PrecioUnidad = curValorOriginal

End If

End Sub


Propiedades LongitudDeSel, ComienzoDeSel y TextoDeSel (SelLength, SelStart y SelText)

Estas propiedades se pueden utilizar en tareas como colocar el punto de inserción, establecer un intervalo de inserción, seleccionar partes de cadenas en un control cuadro de texto o cuadro combinado y borrar texto.

•	La propiedad LongitudDeSel (SelLength) especifica o determina el número de caracteres seleccionados en un cuadro de texto o en la parte de cuadro de texto de un cuadro combinado.

•	La propiedad ComienzoDeSel (SelStart) especifica o determina el punto de inicio del texto seleccionado o la posición del punto de inserción si no hay texto seleccionado.

•	La propiedad TextoDeSel (SelText) devuelve una cadena que contiene el texto seleccionado. Si no hay texto seleccionado, la propiedad TextoDeSel (SelText) contiene un valor Nulo.

Valores

•	Las propiedades LongitudDeSel (SelLength) y ComienzoDeSel (SelStart) utilizan el tipo de datos Entero en el intervalo de 0 al número total de caracteres del cuadro de texto o de la parte de cuadro de texto de un cuadro combinado.

•	La propiedad TextoDeSel (SelText) utiliza una expresión de cadena que contiene el texto seleccionado en el control. Si el control contiene texto seleccionado cuando se establece esta propiedad, el texto seleccionado se reemplaza por el nuevo valor de TextoDeSel (SelText).

Las propiedades LongitudDeSel (SelLength) y ComienzoDeSel (SelStart) se pueden establecer utilizando una macro o Visual Basic. La propiedad TextoDeSel (SelText) es de sólo lectura.

Comentarios

Para establecer o devolver estas propiedades, el control ha de tener el enfoque. Para mover el enfoque a otro control, utilice el método SetFocus.

Establecer la propiedad LongitudDeSel (SelLength) a un número menor que 0 produce un error en tiempo de ejecución.

Establecer la propiedad ComienzoDeSel (SelStart) a un número mayor que el número de caracteres que hay en el control, establece la propiedad a la longitud de texto existente.

Modificar la propiedad ComienzoDeSel (SelStart) cancela la selección, coloca un punto de inserción en el texto y establece la propiedad LongitudDeSel (SelLength) a 0.


Ejemplo de las propiedades LongitudDeSel (SelLength), ComienzoDeSel (SelStart) y TextoDeSel (SelText)

En el ejemplo siguiente se utilizan dos procedimientos de evento para buscar el texto especificado por un usuario. El texto a buscar está establecido en el procedimiento de evento Load del formulario. El procedimiento de evento Click del botón Buscar (en el que hace clic el usuario para iniciar la búsqueda) pide al usuario que escriba el texto a buscar y selecciona el texto en el cuadro de texto si la búsqueda tiene éxito.

Sub Form_Load()

Dim ctlTextoABuscar As Control

Set ctlTextoABuscar = Forms!Form1!TextBox1

ctlTextoABuscar.SetFocus	  ' Establece el enfoque a cuadro de texto.

ctlTextoABuscar.Text = "Esta compañía hace grandes pedidos " _

& "de ajo, orégano, chiles y cominos dos veces al año."

End Sub

Sub Buscar_Click()

Dim txtBuscar As String, intDonde As Integer

Dim ctlTextoABuscar As Control

' Pide la cadena de búsqueda al usuario.

With Me!Textbox1

txtBuscar = CuadroEnt("Escriba el texto a buscar:")

' Busca la cadena de búsqueda en el texto.

intDonde = InStr(.Value, txtBuscar)

If intDonde Then

' Si la encuentra.

.SetFocus

.SelStart = intDonde - 1

.SelLength = Len(txtBuscar)

Else

' Notifica al usuario.

CuadroMsj "Cadena no encontrada."

End If

End With

End Sub


Propiedad ValorPredeterminado (DefaultValue) (Microsoft Access)
Propiedad ValorPredeterminado (DefaultValue)

Puede utilizar la propiedad ValorPredeterminado (DefaultValue) para especificar un valor que se introduce automáticamente en un campo cuando se crea un nuevo registro. Por ejemplo, en la tabla Direcciones puede establecer el valor predeterminado del campo Ciudad a Nueva York. Cuando los usuarios agregan un registro a la tabla, pueden aceptar este valor o introducir el nombre de una ciudad diferente.

Notas

•	La propiedad ValorPredeterminado (DefaultValue) no se aplica a controles de casilla de verificación, botón de opción o botón de alternar cuando se encuentran en un grupo de opciones. Se aplica al grupo de opciones propiamente dicho.

•	La propiedad ValorPredeterminado (DefaultValue) se aplica a todos los campos de la tabla excepto a los campos con el tipo de datos Autonumérico u Objeto OLE.

Valores

La propiedad ValorPredeterminado (DefaultValue) especifica texto o una expresión que se introduce automáticamente en un control o un campo cuando se crea un nuevo registro. Por ejemplo, si establece la propiedad ValorPredeterminado (DefaultValue) de un control de cuadro de texto a =Ahora(), el control muestra la fecha y la hora actual. La longitud máxima de un valor de la propiedad ValorPredeterminado (DefaultValue) es 255 caracteres.

Para un control, puede establecer esta propiedad en la hoja de propiedades del control. Para un campo, puede establecer esta propiedad en la vista Diseño de la tabla (en la sección Propiedades del campo), en una macro o mediante Visual Basic.

En Visual Basic, utilice una expresión de cadena para establecer el valor de esta propiedad. El ejemplo siguiente establece la propiedad ValorPredeterminado (DefaultValue) para un control de cuadro de texto denominado MétodoPago a "Efectivo":

Forms!frmFactura!MétodoPago.DefaultValue = """Efectivo"""

Nota   Para establecer esta propiedad para un campo mediante Visual Basic, utilice la propiedad ValorPredeterminado (DefaultValue) de DAO.

Comentarios

La propiedad ValorPredeterminado (DefaultValue) se aplica sólo cuando se agrega un registro nuevo. Si se cambia la propiedad ValorPredeterminado (DefaultValue), el cambio no se aplica automáticamente a los registros existentes.

Si establece la propiedad ValorPredeterminado (DefaultValue) para un control de un formulario que depende de un campo que también tiene un valor de la propiedad ValorPredeterminado (DefaultValue) definido en la tabla, el valor del control anula al valor de la tabla.

Si crea un control arrastrando un campo desde la lista de campos, el valor de la propiedad ValorPredeterminado (DefaultValue) del campo, tal como está definido en la tabla, se aplica al control del formulario aunque el valor de la propiedad ValorPredeterminado (DefaultValue) del control permanezca en blanco.

Un control puede proporcionar el valor predeterminado para otro control Por ejemplo, si establece la propiedad ValorPredeterminado (DefaultValue) de un control a la expresión siguiente, el valor predeterminado del control se establece al valor de la propiedad ValorPredeterminado (DefaultValue) del control txtEnviarA.

=Forms!frmFactura!txtEnviarA

Si los controles están en el mismo formulario, el control que es el origen del valor predeterminado debe aparecer en el orden de fichas antes que el control que contiene la expresión.


Propiedad Formato (Format)

Puede utilizar la propiedad Formato (Format) para personalizar la forma en que los números, las fechas, las horas y el texto se muestran e imprimen. Por ejemplo, si ha creado un cuadro de texto Precio, puede establecer su propiedad Formato (Format) a Moneda y su propiedad LugaresDecimales (DecimalPlaces) a 2 o a Auto. Si escribe 4321,678 en el control, el número se mostrará como $4.321,68.

Puede utilizar uno de los formatos predefinidos o bien puede crear un formato personalizado mediante los símbolos de formato.

Valores

La propiedad Formato (Format) utiliza valores diferentes para tipos de datos diferentes. Para obtener información acerca de los valores de un tipo de datos específico, vea uno de los temas siguientes:

•	Tipo de datos Fecha/Hora

•	Tipos de datos Numérico y Moneda

•	Tipos de datos Texto y Memo

•	Tipo de datos Sí/No

Para un control, puede establecer esta propiedad en la hoja de propiedades del control. Para un campo, puede establecer esta propiedad en la vista Diseño de la tabla (en la sección Propiedades del campo) o en la vista Diseño de la ventana Consulta (en la hoja de propiedades Propiedades del campo). También puede utilizar una macro o Visual Basic.

Nota   En Visual Basic, introduzca una expresión de cadena que corresponda a uno de los formatos predefinidos o bien introduzca un formato personalizado.

Comentarios

La propiedad Formato (Format) afecta sólo a cómo se muestran los datos. No afecta a cómo se almacenan los datos.

Microsoft Access dispone de formatos predefinidos para los tipos de datos Fecha/Hora, Numérico y Moneda, Texto y Memo, y Sí/No. Los formatos predefinidos dependen del país especificado al hacer doble clic en Configuración regional en el Panel de control de Windows. Microsoft Access muestra los formatos apropiados para el país seleccionado. Por ejemplo, si está seleccionado Inglés (Estados Unidos) en la ficha Configuración regional, 1234.56 en el formato Moneda aparece como $1,234.56, pero si está seleccionado Inglés (Británico) en la ficha Configuración regional, el número aparece como £1,234.56.

Si establece la propiedad Formato (Format) de un campo en la vista Diseño de la tabla, Microsoft Access utiliza ese formato para mostrar datos en las hojas de datos. También aplica la propiedad Formato (Format) del campo a los nuevos controles de formularios e informes.

Puede utilizar los siguientes símbolos en formatos personalizados para cualquier tipo de datos.

Símbolo	Significado
(espacio)	Muestra espacios como caracteres literales.
"ABC"	Muestra todo el contenido de las comillas tipográficas como caracteres literales.
!	Realiza la alineación a la izquierda en lugar de la alineación a la derecha.
*	Rellena el espacio disponible con el siguiente carácter.
\	Muestra el siguiente carácter como un carácter literal. También puede mostrar caracteres literales incluyéndolos entre comillas tipográficas.
[color]	Muestra los datos con el color especificado entre los corchetes. Colores disponibles: Negro, Azul, Verde, Aguamarina, Rojo, Fucsia, Amarillo, Blanco.
No puede mezclar los símbolos de formato personalizados para los tipos de datos Numérico y Moneda con los símbolos de formato de los campos Fecha/Hora, Sí/No, o Texto y Memo.

Cuando se ha definido una máscara de entrada y se ha establecido la propiedad Formato (Format) para los mismos datos, la propiedad Formato (Format) tiene preferencia al mostrar los datos, y la máscara de entrada se ignora. Por ejemplo, si crea una máscara de entrada Contraseña en la vista Diseño de la tabla y también establece la propiedad Formato (Format) para el mismo campo, ya sea en la tabla o en un control de un formulario, la máscara de entrada Contraseña se ignora y los datos se muestran según la propiedad Formato (Format).


Ejemplo de la propiedad Formato (Format)

Los tres ejemplos siguientes establecen la propiedad Formato (Format) mediante un formato predefinido:

Me!Date.Format = "Fecha mediana"

Me!Time.Format = "Hora larga"

Me!Registered.Format = "Sí/No"

El ejemplo siguiente establece la propiedad Formato (Format) mediante un formato personalizado. Este formato muestra una fecha como: Ene 1995.

Forms!Empleados!FechaContratación.Format = "mmm yyyy"

El ejemplo siguiente muestra una función de Visual Basic que da formato a datos numéricos mediante el formato Moneda y que da formato a los datos de texto completamente en mayúsculas. La función se llama desde el evento OnLostFocus de un control independiente denominado Impuestos.

Function ValorFormato() As Integer

Dim varValorIntroducido As Variant

varValorIntroducido = Forms!Estudio!Impuestos.Value

If IsNumeric(varValorIntroducido) = True Then

Forms!Estudio!Impuestos.Format = "Moneda"

Else

Forms!Estudio!Impuestos.Format = ">"

End If

End Function


Propiedad Formato (Format) - Tipos de datos Numérico y Moneda
Propiedad Formato (Format) — Tipos de datos Numérico y Moneda

Puede establecer la propiedad Formato (Format) a formatos numéricos predefinidos o a formatos numéricos personalizados para los tipos de datos Numérico y Moneda.

Valores

Formatos predefinidos

La tabla siguiente muestra los valores predefinidos de la propiedad Formato (Format) para los números.

Valor	Descripción
Número general	(Predeterminado) Muestra el número tal como se introduce.
Moneda	Utiliza el separador de miles; muestra los números negativos entre paréntesis; el valor predeterminado de la propiedad LugaresDecimales (DecimalPlaces) es 2.
Fijo	Muestra al menos un dígito; el valor predeterminado de la propiedad LugaresDecimales (DecimalPlaces) es 2.
Estándar	Utiliza el separador de miles; el valor predeterminado de la propiedad LugaresDecimales (DecimalPlaces) es 2.
Porcentaje	Multiplica el valor por 100 y anexa un signo de porcentaje; el valor predeterminado de la propiedad LugaresDecimales (DecimalPlaces) es 2.
Científico	Utiliza la notación científica estándar.
Formatos personalizados

Los formatos numéricos personalizados pueden tener entre una y cuatro secciones con signos de punto y coma (;) como separador de lista. Cada sección contiene la especificación de formato para un tipo de número diferente.

Sección	Descripción
Primera	El formato para los números positivos.
Segunda	El formato para los números negativos.
Tercera	El formato para los valores cero.
Cuarta	El formato para los valores Null.
Por ejemplo, puede utilizar el siguiente formato Moneda personalizado:

$#.##0,00[Verde];($#.##0,00)[Rojo];"Cero";"Null"

Este formato numérico contiene cuatro secciones separadas por signos de punto y coma y utiliza un formato diferente para cada sección.

Si utiliza varias secciones pero no especifica un formato para cada sección, las entradas para las que no hay ningún formato no mostrarán nada o tomarán como valor predeterminado el formato de la primera sección.

Puede crear formatos numéricos personalizados mediante los símbolos siguientes.

Símbolo	Descripción
, (coma)	Separador decimal. Los separadores se establecen haciendo doble clic en Configuración regional en el Panel de control de Windows.
. (punto)	Separador de miles.
0	Marcador de posición de dígitos. Muestra un dígito ó 0.
#	Marcador de posición de dígitos. Muestra un dígito o nada.
$	Muestra el carácter literal "$".
%	Porcentaje. El valor se multiplica por 100 y se le anexa un signo de porcentaje.
E– o e–	Notación científica con un signo menos (–) junto a los exponentes negativos y nada junto a los exponentes positivos. Este símbolo debe utilizarse con otros símbolos, como en el ejemplo 0,00E–00 o 0,00E00.
E+ o e+	Notación científica con un signo menos junto a los exponentes negativos y un signo más (+) junto a los exponentes positivos. Este símbolo debe utilizarse con otros símbolos, como en el ejemplo 0,00E+00.
Comentarios

Puede utilizar la propiedad LugaresDecimales (DecimalPlaces) para anular el número predeterminado de lugares decimales del formato predefinido especificado para la propiedad Formato (Format).


Ejemplo de la propiedad Formato (Format) - Tipos de datos Numérico y Moneda
Ejemplo de la propiedad Formato (Format) — Tipos de datos Numérico y Moneda

Los siguientes son ejemplos de los formatos numéricos predefinidos.

Valor	Datos	Muestra
Número general	3456,789 –3456,789 $213,21	3456,789 –3456,789 $213,21
Moneda	3456,789 –3456,789	$3.456,79 ($3.456,79)
Fijo	3456,789 –3456,789 3,56645	3456,79 –3456,79 3,57
Estándar	3456,789	3.456,79
Porcentaje	3 0,45	300% 45%
Científico	3456,789 –3456,789	3,46E+03 –3,46E+03
Los siguientes son ejemplos de formatos numéricos personalizados.

Valor	Descripción
0;(0);;"Nulo"	Muestra los valores positivos normalmente; muestra los valores negativos entre paréntesis; muestra la palabra "Nulo" si el valor es Null.
+0,0;–0,0;0,0	Muestra un signo más (+) o menos (–) con números positivos o negativos; muestra 0,0 si el valor es cero.


Propiedad Formato (Format) - Tipo de datos Fecha/Hora
Propiedad Formato (Format) — Tipo de datos Fecha/Hora

Puede establecer la propiedad Formato (Format) a formatos de fecha y hora predefinidos o bien puede utilizar formatos personalizados para el tipo de datos Fecha/Hora.

Valores

Formatos predefinidos

La tabla siguiente muestra los valores predefinidos de la propiedad Formato (Format) para el tipo de datos Fecha/Hora.

Valor	Descripción
Fecha general	(Predeterminado) Si el valor es sólo una fecha, no se muestra ninguna hora; si el valor es sólo una hora, no se muestra ninguna fecha. Este valor es una combinación de los valores de Fecha corta y Hora larga. Ejemplos: 3/4/93, 05:34:00 PM y 3/4/93 05:34:00 PM.
Fecha larga	Igual que el valor de Fecha larga del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. Ejemplo: Sábado, 3 de Abril de 1993.
Fecha mediana	Ejemplo: 3-Abr-93.
Fecha corta	Igual que el valor de Fecha corta del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. Ejemplo: 3/4/93. Atención   El formato Fecha corta asume que las fechas comprendidas entre el 1/1/00 y el 31/12/29 son fechas del siglo XXI (es decir, que los años están entre el 2000 y el 2029). Las fechas comprendidas entre el 1/1/30 y el 31/12/99 se asume que son fechas del siglo XX (es decir, que los años están entre 1930 y 1999).
Hora larga	Igual que el valor de la ficha Hora del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. Ejemplo: 5:34:23 PM.
Hora mediana	Ejemplo: 5:34 PM.
Hora corta	Ejemplo: 17:34.
Formatos personalizados

Puede crear formatos de fecha y hora personalizados mediante los símbolos siguientes.

Símbolo	Descripción
: (dos puntos)	Separador de hora. Los separadores se establecen en el cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows.
/	Separador de fecha.
c	Igual que el formato predefinido Fecha general.
d	Día del mes en uno o dos dígitos numéricos, según sea necesario (1 a 31).
dd	Día del mes en dos dígitos numéricos (01 a 31).
ddd	Tres primeras letras del día de la semana (Lun a Dom)
dddd	Nombre completo del día de la semana (Lunes a Dom).
ddddd	Igual que el formato predefinido Hora corta.
dddddd	Igual que el formato predefinido Fecha larga.
s	Día de la semana (1 a 7).
ss	Semana del año (1 a 53).
m	Mes del año en uno o dos dígitos numéricos, según sea necesario (1 a 12).
mm	Mes del año en dos dígitos numéricos (01 a 12).
mmm	Tres primeras letras del mes (Ene a Dic).
mmmm	Nombre completo del mes (Enero a Diciembre).
t	Fecha mostrada como trimestre del año (1 a 4).
a	Número de día del año (1 a 366).
aa	Dos últimos dígitos del año (01 a 99).
aaaa	Año completo (0100 a 9999).
h	Hora en uno o dos dígitos, según sea necesario (0 a 23).
hh	Hora en dos dígitos (00 a 23).
n	Minuto en uno o dos dígitos, según sea necesario (0 a 59).
nn	Minuto en dos dígitos (00 a 59).
s	Segundo en uno o dos dígitos, según sea necesario (0 a 59).
ss	Segundo en dos dígitos (00 a 59).
ttttt	Igual que el formato predefinido Hora larga.
AM/PM	Reloj de 12 horas con las letras mayúsculas "AM" o "PM", según sea apropiado.
am/pm	Reloj de doce horas con las letras minúsculas "am" o "pm", según sea apropiado.
A/P	Reloj de doce horas con la letra mayúscula "A" o "P", según sea apropiado.
a/p	Reloj de doce horas con la letra minúscula "a" o "p", según sea apropiado.
AMPM	Reloj de doce horas con el designador de mañana/tarde apropiado establecido en el cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows.
Los formatos personalizados se muestran según el valor especificado en el cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. Los formatos personalizados incoherentes con los valores especificados en el cuadro de diálogo Propiedades de Configuración regional se ignoran.

Nota   Si desea agregar una coma u otro separador al formato personalizado, incluya el separador entre comillas de la forma siguiente: d mmm", "aaaa.


Ejemplo de la propiedad Formato (Format) - Tipo de datos Fecha/Hora
Ejemplo de la propiedad Formato (Format) — Tipo de datos Fecha/Hora

A continuación se muestran ejemplos de formatos de fecha/hora personalizados.

Valor	Muestra
ddd", "d mmm", "aaaa	Lun, 2 Jun, 1997
dd mmmm", "aaaa	02 Junio, 1997
"Ésta es la semana número "ss	Ésta es la semana número 22
"Hoy es "dddd	Hoy es Martes
Puede utilizar un formato personalizado para mostrar "A.D." antes o "D.D." después de un año dependiendo de si se introduce un número negativo o positivo. Para ver cómo funciona este formato personalizado, cree un nuevo campo de tabla, establezca su tipo de datos a Numérico e introduzca el formato de la forma siguiente:

"A.D. "#;#;#;# " D.D."

Los números positivos se muestran como años con un "A.D." antes del año. Los números negativos se muestran como años con un "D.D." después del año.


Propiedad Formato (Format) - Tipo de datos Sí/No
Propiedad Formato (Format) — Tipo de datos Sí/No

Puede establecer la propiedad Formato (Format) a los formatos predefinidos Sí/No, Verdadero/Falso o Activado/Desactivado o a un formato personalizado para el tipo de datos Sí/No.

Valores

Microsoft Access utiliza un control de casilla de verificación como control predeterminado para el tipo de datos Sí/No. Los formatos predefinidos y personalizados se ignoran cuando se utiliza un control de casilla de verificación. Por tanto, estos formatos se aplican sólo a los datos mostrados en un control de cuadro de texto.

Formatos predefinidos

La propiedad Formato (Format) dispone de los formatos predefinidos Sí/No, Verdadero/Falso y Activado/Desactivado. Sí, Verdadero y Activado son equivalentes entre sí, al igual que lo son No, Falso y Desactivado. Si especifica un formato predefinido y, a continuación, introduce un valor equivalente, se mostrará el formato predefinido del valor equivalente. Por ejemplo, si introduce Verdadero o Activado en un control de cuadro de texto con su propiedad Formato (Format) establecida a Sí/No, el valor se convierte automáticamente a Sí.

Formatos personalizados

El tipo de datos Sí/No puede utilizar formatos personalizados que contengan hasta tres secciones.

Sección	Descripción
Primera	Esta sección no tiene ningún efecto en el tipo de datos Sí/No. No obstante, se requiere un signo de punto y coma (;) como marcador de posición.
Segunda	El texto para mostrar en lugar de los valores Sí, Verdadero o Activado.
Tercera	El texto para mostrar en lugar de los valores No, Falso o Desactivado.


Ejemplo de la propiedad Formato (Format) - Tipo de datos Sí/No
Ejemplo de la propiedad Formato (Format) — Tipo de datos Sí/No

El ejemplo siguiente muestra un formato Sí/No personalizado para un control de cuadro de texto. El control muestra la palabra "Siempre" en texto azul para Sí, Verdadero o Activado, y la palabra "Nunca" en texto rojo para No, Falso o Desactivado.

;"Siempre"[Azul];"Nunca"[Rojo]


Propiedad Formato (Format) - Tipos de datos Texto y Memo
Propiedad Formato (Format) — Tipos de datos Texto y Memo

Puede utilizar símbolos especiales para la propiedad Formato (Format) con el fin de crear formatos personalizados para los campos Texto y Memo.

Valores

Puede crear formatos de Texto y Memo personalizados mediante los siguientes símbolos.

Símbolo	Descripción
@	Se necesita un carácter de texto (ya sea un carácter o un espacio).
&	No se necesita un carácter de texto.
<	Convertir todos los caracteres a minúsculas.
>	Convertir todos los caracteres a mayúsculas.
Los formatos personalizados para los campos Texto y Memo pueden tener hasta dos secciones. Cada sección contiene la especificación de formato para diferentes datos de un campo.

Sección	Descripción
Primera	Formato para los campos con texto.
Segunda	Formato para los campos con cadenas de longitud cero y valores Nulos.
Por ejemplo, si tiene un control de cuadro de texto en el que desea que aparezca la palabra "Ninguno" cuando no exista ninguna cadena en el campo, puede introducir el formato personalizado @;"Ninguno" como el valor de la propiedad Formato (Format) del control. El símbolo @ hace que se muestre el texto del campo; la segunda sección hace que aparezca la palabra "Ninguno" cuando haya una cadena de longitud cero o un valor Nulo en el campo.

Nota   En la versión 2.0 de Microsoft Access, puede usar la función Formato (Format) para retornar un valor para una cadena de longitud cero y otro distinto para un valor Null, y puede usar de forma similar la propiedad Formato (Format) para dar formato de forma automática a los campos en la vista Hoja de datos de la tabla o a los controles en un formulario o informe.

En Microsoft Access 97, debe comprobar de forma separada los casos posibles para el valor Null, y después retornar un valor apropiado basándose en el resultado. Por ejemplo, puede usar la función Silnm (IIf) en una expresión con la función Formato (Format), como se describe a continuación:

var = IIf(IsNull(strX),"Nulo", Format(strX, "@;ZLS"))

Este cambio sólo se aplica cuando usa la función Formato (Format) para dar formato a una cadena dependiendo de si es una cadena de longitud cero o un valor Null. Otras expresiones de formato que se usan con la función Formato (Format) se comportan de la misma forma en que lo hacían en versiones anteriores.

Puede establecer la propiedad Formato (Format) de un control para que muestre diferentes valores para valores Null y para cadenas de longitud cero. Para distinguir entre valores Null y cadenas de longitud cero en un control o en un formulario, establezca la propiedad OrigenDelControl (ControlSource) del control a una expresión que relice una comprobación del valor Null. Por ejemplo, para mostrar "Nulo" o "CLC" en un control, establezca la propiedad OrigenDelControl (ControlSource) a la siguiente expresión:

=Silnm(EsNulo([MiControl]), "Nulo", Formato([MiControl], "@;CLC"))


Ejemplo de la propiedad Formato (Format) - Tipos de datos Texto y Memo
Ejemplo de la propiedad Formato (Format) — Tipos de datos Texto y Memo

A continuación se muestran ejemplos de formatos personalizados de texto y memo.

Valor	Datos	Muestra
@@@-@@-@@@@	465043799	465-04-3799
@@@@@@@@@	465-04-3799 465043799	465-04-3799 465043799
>	davolio DAVOLIO Davolio	DAVOLIO DAVOLIO DAVOLIO
<	davolio DAVOLIO Davolio	davolio davolio davolio
@;"Desconocido"	Valor Null	Desconocido
	Cadena de longitud cero	Desconocido
	Cualquier texto	El mismo texto introducido


Propiedad MáscaraDeEntrada (InputMask)

Puede utilizar la propiedad MáscaraDeEntrada (InputMask) para facilitar la entrada de datos y para controlar los valores que los usuarios pueden introducir en un control de cuadro de texto. Por ejemplo, puede crear una máscara de entrada para un campo Número de teléfono que muestre exactamente cómo debe introducirse un número nuevo: (___) ___-____. A menudo es más fácil utilizar el Asistente para máscaras de entrada para establecer la propiedad automáticamente.

Valores

La propiedad MáscaraDeEntrada (InputMask) puede contener hasta tres secciones separadas por signos de punto y coma (;).

Sección	Descripción
Primera	Especifica la máscara de entrada propiamente dicha, por ejemplo, !(999) 999-9999. Para ver una lista de los caracteres que puede utilizar para definir la máscara de entrada, vea la tabla siguiente.
Segunda	Especifica si Microsoft Access almacena los caracteres de visualización literales en la tabla al introducir datos. Si utiliza 0 para esta sección, todos los caracteres de visualización literales (por ejemplo, el paréntesis de una máscara de entrada de un número de teléfono) se almacenan con el valor; si introduce 1 o deja esta sección en blanco, sólo se almacenan los caracteres introducidos en el control.
Tercera	Especifica el carácter que Microsoft Access muestra para el espacio en el que el usuario debe escribir un carácter en la máscara de entrada. Para esta sección puede utilizar cualquier carácter; para mostrar una cadena en blanco, utilice un espacio entre comillas (" ").
En Visual Basic, se utiliza una expresión de cadena para establecer esta propiedad. El ejemplo siguiente especifica una máscara de entrada para un control de cuadro de texto utilizado para introducir un número de teléfono:

Forms!Clientes!Teléfono.InputMask = "(###) ###-####"

Al crear una máscara de entrada, puede utilizar caracteres especiales para hacer que la introducción de determinados datos (por ejemplo, el código de área de un número de teléfono) sea obligatoria y que los demás datos sean opcionales (como la extensión de teléfono). Estos caracteres especifican el tipo de datos, como el número o el carácter que debe introducir para cada carácter de la máscara de entrada.

Puede definir una máscara de entrada mediante los siguientes caracteres.

Carácter	Descripción
0	Dígito (0 a 9, entrada obligatoria, signos más [+] y menos [–] no permitidos).
9	Dígito o espacio (entrada no obligatoria, signos más y menos no permitidos).
#	Dígito o espacio (entrada no obligatoria; los espacios se muestran en blanco en el modo Edición, pero se eliminan cuando se guardan los datos; signos más y menos permitidos).
L	Letra (A a Z, entrada obligatoria).
?	Letra (A a Z, entrada opcional).
A	Letra o dígito (entrada obligatoria).
a	Letra o dígito (entrada opcional).
&	Cualquier carácter o un espacio (entrada obligatoria).
C	Cualquier carácter o un espacio (entrada opcional).
.  ,  :  ;  -  /	Marcador de posición decimal y separadores de miles, hora y fecha (el carácter depende del valor del cuadro de diálogo Propiedades de Configuración regional en el Panel de control de Windows).
<	Hace que todos los caracteres se conviertan a minúsculas.
>	Hace que todos los caracteres se conviertan a mayúsculas.
!	Hace que la máscara de entrada se muestre de derecha a izquierda, en lugar de mostrarse de izquierda a derecha. Los caracteres introducidos en la máscara siempre se rellenan de izquierda a derecha. Puede incluir el signo de exclamación en cualquier lugar de la máscara de entrada.
\	Hace que el carácter siguiente se muestre como un carácter literal (por ejemplo, \A se muestra sólo como A).
Nota   El establecimiento de la propiedad MáscaraDeEntrada (InputMask) a la palabra "Contraseña" crea un control de entrada de contraseña. Cualquier carácter introducido en el control se almacena como el carácter pero se muestra como un asterisco (*). Utilice la máscara de entrada de Contraseña para impedir que se muestren los caracteres escritos en la pantalla.

Para un control, puede establecer esta propiedad en la hoja de propiedades del control. Para un campo de una tabla, puede establecer esta propiedad en la vista Diseño de la tabla (en la sección Propiedades del campo) o en la vista Diseño de la ventana Consulta (en la hoja de propiedades Propiedades del campo).

También puede establecer la propiedad MáscaraDeEntrada (InputMask) mediante una macro o Visual Basic.

Comentarios

Al introducir datos en un campo para el que se ha definido una máscara de entrada, los datos siempre se introducen en el modo Sobrescribir. Si utiliza la tecla RETROCESO para eliminar un carácter, el carácter se reemplaza por un espacio en blanco.

Si mueve texto desde un campo para el cual ha definido una máscara de entrada hasta el Portapapeles, los caracteres de visualización literales se copian, incluso si ha especificado que no se guarden con datos.

Nota   Sólo los caracteres introducidos directamente en un control o un cuadro combinado se ven afectados por la máscara de entrada. Microsoft Access ignora las máscaras de entrada al importar datos, al ejecutar una consulta de acción o al introducir caracteres en un control estableciendo la propiedad Texto (Text) del control en Visual Basic o mediante la acción EstablecerValor en una macro.

Cuando se ha definido una máscara de entrada y se ha establecido la propiedad Formato (Format) para el mismo campo, la propiedad Formato (Format) tiene preferencia cuando se muestran los datos. Esto quiere decir que incluso aunque haya guardado una máscara de entrada, la máscara de entrada se ignora cuando se da formato a los datos y se muestran en pantalla. Los datos de la tabla base propiamente dicha no se modifican; la propiedad Formato (Format) afecta sólo a cómo se muestran los datos.


Ejemplo de la propiedad MáscaraDeEntrada (InputMask) - Máscaras de entrada útiles
Ejemplo de la propiedad MáscaraDeEntrada (InputMask) — Máscaras de entrada útiles

La tabla siguiente muestra algunas máscaras de entrada útiles y el tipo de valores que puede introducir en ellas.

Máscara de entrada	Valores de ejemplo
(000) 000-0000	(206) 555-0248
(999) 999-9999	(206) 555-0248
	(   ) 555-0248
(000) AAA-AAAA	(206) 555-TELE
#999	–20
	2000
>L????L?000L0	GREENGR339M3
	MAY  R 452B7
>L0L 0L0	T2F 8M4
00000-9999	98115-
	98115-3007
>L<??????????????	María
	Brendan
SSN 000-00-0000	SSN 555-55-5555
>LL00000-0000	DB51392-0493


Propiedades ReglaDeValidación (ValidationRule) y TextoDeValidación (ValidationText)

Puede utilizar la propiedad ReglaDeValidación (ValidationRule) con el fin de especificar requisitos para los datos introducidos en un registro, un campo o un control. Cuando se introducen datos que infringen el valor de la propiedad ReglaDeValidación (ValidationRule), puede utilizar la propiedad TextoDeValidación (ValidationText) para especificar el mensaje que se mostrará al usuario.

Nota   Las propiedades ReglaDeValidación (ValidationRule) y TextoDeValidación (ValidationText) no se aplican a controles de casilla de verificación, botón de opción o botón de alternar cuando se encuentran en un grupo de opciones. Se aplican sólo al grupo de opciones propiamente dicho.

Valores

Introduzca una expresión para el valor de la propiedad ReglaDeValidación (ValidationRule) y texto para el valor de la propiedad TextoDeValidación (ValidationText). La longitud máxima del valor de la propiedad ReglaDeValidación (ValidationRule) es 2048 caracteres. La longitud máxima del valor de la propiedad TextoDeValidación (ValidationText) es 255 caracteres.

Para los controles, puede establecer la propiedad ReglaDeValidación (ValidationRule) a cualquier expresión válida. Para las reglas de validación de campo y registro, la expresión no puede contener funciones definidas por el usuario, funciones agregadas de dominio o funciones agregadas, la función UsuarioActual (CurrentUser) o Eval, o referencias a formularios, consultas o tablas. Además, las reglas de validación de campo no pueden contener referencias a otros campos. Para los registros, las expresiones pueden incluir referencias a campos de esa tabla.

Puede establecer las propiedades ReglaDeValidación (ValidationRule) y TextoDeValidación (ValidationText) mediante:

•	La sección Propiedades del campo de la vista Diseño de la tabla (para una regla de validación de campo).

•	La hoja de propiedades de una tabla; para ello, elija Propiedades en el menú Ver en la vista Diseño de la tabla (para una regla de validación de registro).

•	La hoja de propiedades de un control de un formulario.

•	Una macro o Visual Basic. En Visual Basic, utilice una expresión de cadena para establecer estas propiedades.

Para los registros y los campos de tabla, también puede establecer estas propiedades en Visual Basic mediante la propiedad ReglaDeValidación (ValidationRule) de DAO.

Comentarios

Microsoft Access valida automáticamente valores según el tipo de datos de un campo; por ejemplo, Microsoft Access no permite texto en un campo numérico. Puede establecer reglas más específicas mediante la propiedad ReglaDeValidación (ValidationRule).

Si establece la propiedad ReglaDeValidación (ValidationRule) pero no la propiedad TextoDeValidación (ValidationText), Microsoft Access muestra un mensaje de error estándar cuando se infringe la regla de validación. Si establece la propiedad TextoDeValidación (ValidationText), el texto introducido se muestra como mensaje de error.

Por ejemplo, cuando se agrega un registro para un nuevo empleado, puede introducir una propiedad ReglaDeValidación (ValidationRule) que requiera que el valor del campo FechaInicio del empleado quede entre la fecha de fundación de la compañía y la fecha actual. Si la fecha introducida no está en ese intervalo, puede mostrar el mensaje de la propiedad TextoDeValidación (ValidationText): "La fecha de inicio es incorrecta."

Si crea un control arrastrando un campo desde la lista de campos, la regla de validación del campo permanece en efecto, aunque no se muestra en el cuadro de la propiedad ReglaDeValidación (ValidationRule) del control en la hoja de propiedades. Esto se debe a que la regla de validación del campo es heredada por un control dependiente de ese campo.

Las reglas de validación de control, campo y registro se aplican de la forma siguiente:

•	Las reglas de validación establecidas para los campos y controles se aplican cuando se editan los datos y el enfoque sale del campo o control.

•	Las reglas de validación para los registros se aplican al moverse a otro registro.

•	Si crea reglas de validación para un campo y un control dependiente del campo, ambas reglas de validación se aplican cuando se editan los datos y el enfoque sale del control.

La tabla siguiente contiene ejemplos de expresiones para las propiedades ReglaDeValidación (ValidationRule) y TextoDeValidación (ValidationText).

Propiedad ReglaDeValidación (ValidationRule)	Propiedad TextoDeValidación (ValidationText)
<> 0	La entrada debe ser un valor distinto de cero.
> 1000 O Es Nulo	La entrada debe estar en blanco o ser mayor que 1000.
Como "A????"	La entrada debe tener 5 caracteres y comenzar por la letra "A".
>= #1/1/96# Y <#1/1/97#	La entrada debe ser una fecha de 1996.
DBúsq("IdCliente", "Clientes", "IdCliente = Forms!Clientes!IdCliente") Es Nulo	La entrada debe ser un IdCliente exclusivo (las funciones agregadas de dominio se permiten sólo para la validación a nivel de formulario).
Si crea una regla de validación para un campo, Microsoft Access normalmente no permite que se almacene un valor Null en el campo. Si desea permitir un valor Null, agregue "Es Nulo" a la regla de validación, como en "<> 8 O Es Nulo", y asegúrese de que la propiedad Requerido (Required) está establecida a No.

No es posible establecer reglas de validación de campo o registro para las tablas creadas fuera de Microsoft Access (por ejemplo, dBASE, Paradox, o SQL Server). Para este tipo de tablas, puede crear reglas de validación sólo para controles.


Ejemplo de las propiedades ReglaDeValidación (ValidationRule) y TextoDeValidación (ValidationText)

El ejemplo siguiente crea una regla de validación para un campo que permite sólo la introducción de valores mayores de 65. Si se introduce un número menor de 65, se muestra un mensaje de error. Las propiedades se establecen mediante la función EstablecerValidaciónDeCampo.

Dim cadNombreTabla As String, cadNombreCampo As String

Dim cadReglaValid As String

Dim cadReglaValid As String, entX As Integer

cadNombreTabla = "Clientes"

cadNombreCampo = "Edad"

cadReglaValid = ">= 65"

cadTextoValid = "Escriba un número mayor o igual que 65."

entX = EstablecerValidaciónDeCampo(cadNombreTabla, cadNombreCampo, _

cadReglaValid, cadTextoValid)

Function EstablecerValidaciónDeCampo(cadNombreTabla As String, _

cadNombreCampo As String, cadReglaValid As String, _

cadTextoValid As String) As Integer

Dim dbs As Database, tdf As TableDef, fld As Field

Set dbs = CurrentDb

Set tdf = dbs.TableDefs(cadNombreTabla)

Set fld = tdf.Fields(cadNombreCampo)

fld.ValidationRule = cadReglaValid

fld.ValidationText = cadTextoValid

End Function

El ejemplo siguiente utiliza la función EstablecerValidaciónDeTabla para establecer la validación a nivel del registro con el fin de garantizar que el valor del campo FechaFin es posterior al valor del campo FechaInicio.

Dim cadNombreTabla As String, cadReglaValid As String

Dim cadTextoValid As String

Dim entX As Integer

cadNombreTabla = "Empleados"

cadReglaValid = "FechaFin > FechaInicio"

cadTextoValid = "Escriba una FechaFin que sea posterior a la FechaInicio."

entX = EstablecerValidaciónDeTabla(cadNombreTabla, cadReglaValid, cadTextoValid)

Function EstablecerValidaciónDeTabla(cadNombreTabla As String, _

cadReglaValid As String, cadTextoValid As String) _

As Integer

Dim dbs As Database, tdf As TableDef

Set dbs = CurrentDb

Set tdf = dbs.TableDefs(cadNombreTabla)

tdf.ValidationRule = cadReglaValid

tdf.ValidationText = cadTextoValid

End Function


Propiedades de evento

Las propiedades de evento hacen que una macro o el procedimiento de evento asociado de Visual Basic se ejecuten cuando tiene lugar un evento determinado. Por ejemplo, si escribe el nombre de una macro en la propiedad AlHacerClic (OnClick) de un botón de comando, esa macro se ejecuta cuando se hace clic en el botón de comando. Si desea ver una lista de propiedades de evento completa, consulte Referencia de eventos y propiedades de los eventos.

Valores

Para ejecutar una macro, escriba el nombre de la macro. Puede seleccionar una macro existente en la lista. Si la macro se encuentra en un grupo de macros, aparecerá en la lista bajo el nombre del grupo de macros, como nombreGrupoMacro.nombreMacro.

Para ejecutar el procedimiento de evento asociado al evento, seleccione [Procedimiento de evento] en la lista.

Nota   Aunque el uso de un procedimiento de evento es el método recomendado para ejecutar código de Visual Basic en respuesta a un evento, también es posible ejecutar una función definida por el usuario cuando tiene lugar un evento. Para ejecutar una función definida por el usuario, incluya un signo igual (=) antes del nombre de la función y paréntesis después de ella, como por ejemplo =nombreFunción( ).

Puede establecer las propiedades de evento en la hoja de propiedades de un objeto, en una macro, o utilizando Visual Basic. Observe que no puede establecer ninguna propiedad de evento mientras da formato o imprime un formulario o un informe.

Sugerencia   Puede usar generadores para ayudarle a establecer una propiedad de evento. Para utilizarlos, haga clic en el botón Generar  [image] situado a la derecha del cuadro de propiedades o haga clic con el botón secundario del mouse sobre el cuadro de propiedades y a continuación haga clic en Generar del menú contextual. En el cuadro de diálogo Elegir generador, seleccione:

•	El Generador de macros para crear y especificar una macro para esta propiedad de evento. También puede usar el Generador de macros para editar una macro ya especificada por la propiedad.

•	El Generador de código para crear y especificar un procedimiento de evento para esta propiedad de evento. También puede usar el Generador de código para editar un procedimiento de evento ya especificado por la propiedad.

•	El Generador de expresiones para seleccionar y especificar una función definida por el usuario para esta propiedad de evento.

En Visual Basic, establezca la propiedad a una expresión de cadena.

Para ejecutar	Use la sintaxis	Ejemplo:
Macro	"nombreMacro"	Button1.OnClick = "miMacro"
Procedimiento de evento	"[Procedimiento de evento]"	Button1.OnClick = "[Procedimiento de evento]"
Función definida por el usuario	"=nombreFunción( )"	Button1.OnClick = "=miFunción ()"


Propiedades de evento - Ejemplo de Visual Basic
Propiedades de evento — Ejemplo de Visual Basic

En el siguiente ejemplo se muestra cómo usar el valor introducido en el control País para determinar cuál de las dos macros diferentes existentes debe ejecutarse cuando se hace clic en el botón "Imprimir informe de país".

Private Sub País DespuésDeActualizar()

If País = "Canadá" Then

[Imprimir informe de país].OnClick = "imprimirInformeCanadá"

ElseIf País = "EE.UU." Then

[Imprimir informe del país].OnClick = "imprimirInformeEEUU"

End If

End Sub


Propiedades de evento y objetos a los que se aplican

Propiedad de evento	Se aplica a
AlAbrir (OnOpen)	Formularios e informes.
AlActivar (OnActivate)	Formularios e informes.
AlActivarRegistro (OnCurrent)	Formularios.
AlActualizar (OnUpdated)	Controles (ActiveX, marco de objeto dependiente, marco de objeto independiente) de un formulario.
AlAplicarFiltro (OnApplyFilter)	Formularios.
AlBajarMouse (OnMouseDown)	Formularios. Secciones de formulario. Controles (marco de objeto dependiente, gráfico, casilla de verificación, cuadro combinado, botón de comando, imagen, etiqueta, cuadro de lista, botón de opción, grupo de opciones, rectángulo, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlBajarTecla (OnKeyDown)	Formularios. Controles (marco de objeto dependiente, casilla de verificación, cuadro combinado, botón de comando, cuadro de lista, botón de opción, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlCambiar (OnChange)	Controles (cuadro combinado, ficha, cuadro de texto) de un formulario.
AlCambiarTamaño (OnResize)	Formularios.
AlCargar (OnLoad)	Formularios.
AlCerrar (OnClose)	Formularios e informes.
AlCronómetro (OnTimer)	Formularios.
AlDarFormato (OnFormat)	Secciones de informe.
AlDesactivar (OnDeactivate)	Formularios e informes.
AlDescargar (OnUnload)	Formularios.
AlEliminar (OnDelete)	Formularios.
AlEntrar (OnEnter)*	Controles (ActiveX, marco de objeto dependiente, gráfico, casilla de verificación, cuadro combinado, botón de comando, cuadro de lista, botón de opción, grupo de opciones, subformulario/subinforme, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlFiltrar (OnFilter)	Formularios.
AlHacerClic (OnClick)	Formularios. Secciones de formularios. Controles (marco de objeto dependiente, gráfico, casilla de verificación, cuadro combinado, botón de comando, imagen, etiqueta, cuadro de lista, botón de opción, grupo de opciones, rectángulo, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlHacerDobleClic (OnDblClick)*	Formularios. Secciones de formularios. Controles (marco de objeto dependiente, gráfico, casilla de verificación, cuadro combinado, botón de comando, imagen, etiqueta, cuadro de lista, botón de opción, grupo de opciones, rectángulo, ficha, cuadro de texto, botón de alternar, marco de objeto independiente de un formulario.
AlImprimir (OnPrint)	Secciones de informe.
AlMoverMouse (OnMouseMove)	Formularios. Secciones de formulario. Controles (marco de objeto dependiente, gráfico, casilla de verificación, cuadro combinado, botón de comando, imagen, etiqueta, cuadro de lista, botón de opción, grupo de opciones, rectángulo, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlNoDatos (OnNoData)	Informes.
AlNoEnLista (OnNotinList)	Controles (cuadro combinado) de un formulario.
AlOcurrirError (OnError)	Formularios e informes.
AlPaginar (OnPage)	Informes.
AlPerderEnfoque (OnLostFocus)	Formularios. Controles (ActiveX, marco de objeto dependiente, casilla de verificación, cuadro combinado, botón de comando, cuadro de lista, botón de opción, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlPresionarTecla (OnKeyPress)	Formularios. Controles (marco de objeto dependiente, casilla de verificación, cuadro combinado, botón de comando, cuadro de lista, botón de opción, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlRecibirEnfoque (OnGotFocus)	Formularios. Controles (ActiveX, marco de objeto dependiente, casilla de verificación, cuadro combinado, botón de comando, cuadro de lista, botón de opción, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlRetirarse (OnRetreat)	Secciones de informe.
AlSalir (OnExit)*	Controles (ActiveX, marco de objeto dependiente, gráfico, casilla de verificación, cuadro combinado, botón de comando, cuadro de lista, botón de opción, grupo de opciones, subformulario/subinforme, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlSubirMouse (OnMouseUp)	Formularios. Secciones de formulario. Controles (marco de objeto dependiente, gráfico, casilla de verificación, cuadro combinado, botón de comando, etiqueta, cuadro de lista, botón de opción, grupo de opciones, rectángulo, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AlSubirTecla (OnKeyUp)	Formularios. Controles (marco de objeto dependiente, casilla de verificación, cuadro combinado, botón de comando, cuadro de lista, botón de opción, ficha, cuadro de texto, botón de alternar, marco de objeto independiente) de un formulario.
AntesDeActualizar (BeforeUpdate)	Formularios. Controles (marco de objeto dependiente, casilla de verificación, cuadro combinado, cuadro de lista, botón de opción, grupo de opciones, cuadro de texto, botón de alternar) de un formulario.
AntesDeConfirmarEliminación (BeforeDelConfirm)	Formularios.
AntesDeInsertar (BeforeInsert)	Formularios.
DespuésDeActualizar (AfterUpdate)	Formularios, Controles (marco de objeto dependiente, casilla de verificación, cuadro combinado, cuadro de lista, botón de opción, grupo de opciones, cuadro de texto, botón de alternar) de un formulario.
DespuésDeConfirmarEliminación (AfterDelConfirm)	Formularios
DespuésDeInsertar (AfterInsert)	Formularios
*   Estas propiedades no se aplican a las casillas de verificación, los botones de opción ni los botones de alternar de un grupo de opciones. Sólo pueden aplicarse al grupo de opciones propiamente dicho.


Propiedad Filtro (Filter) (Microsoft Access)
Propiedad Filtro (Filter)

Puede utilizar la propiedad Filtro (Filter) para especificar que se muestre un subconjunto de registros, cuando se aplica un filtro a un formulario, consulta o tabla.

Valores

La propiedad Filtro (Filter) es una expresión de cadena que consiste en una cláusula WHERE sin la palabra clave WHERE. Por ejemplo, el siguiente código Visual Basic define y aplica un filtro para mostrar sólo los clientes de EE.UU.:

Me.Filtro = "País = 'EE.UU.'"

Me.ActivarFiltro = True

Puede establecer esta propiedad utilizando hojas de propiedades de tablas o de formularios, una macro o Visual Basic.

También puede establecer esta propiedad en la vista Formulario o en la vista Hoja de datos seleccionando Filtro en el menú Registros y haciendo clic en uno de los comandos en el submenú.

Nota   Los valores de la propiedad Filtro (Filter) no tienen efecto sobre la propiedad Filter de DAO.

Comentarios

Puede utilizar la propiedad Filtro (Filter) para guardar un filtro y aplicarlo en algún momento posterior. Los filtros son guardados con los objetos en los que son creados. Cuando se abre el objeto son cargados automáticamente, aunque no son aplicados automáticamente.

Cuando se crea un nuevo objeto, hereda las propiedades OrigenDelRegistro (RecordSource), Filtro (Filter), OrdenarPor (OrderBy) y ActivarOrden (OrderByOn) de la tabla o consulta de la que fue creado.

Para aplicar un filtro guardado a un formulario, consulta o tabla, puede hacer clic en Aplicar filtro  [image] de la barra de herramientas, hacer clic en Aplicar Filtro/orden en el menú Registros o utilizar una macro o Visual Basic para establecer la propiedad ActivarFiltro (FilterOn) a Verdadero (True) (–1). En el caso de los informes, puede aplicar un filtro estableciendo la propiedad ActivarFiltro (FilterOn) a Sí en la hoja de propiedades del informe.

El botón Aplicar Filtro indica el estado de las propiedades Filtro (Filter) y ActivarFiltro (FilterOn). El botón permanece desactivado hasta que haya un filtro para aplicar. Si en la actualidad se está aplicando un filtro, el botón Aplicar filtro aparecerá presionado.

Para aplicar un filtro automáticamente cuando se abre un formulario, especifíquelo en los valores de la propiedad del evento OnOpen, o bien una macro que utilice la acción AplicarFiltro (ApplyFilter) o un procedimiento de evento que utilice el método ApplyFilter del objeto DoCmd.

Puede eliminar un filtro haciendo clic en el botón Aplicar filtro presionado, haciendo clic en Quitar filtro u ordenar en el menú Registros o utilizando Visual Basic para establecer la propiedad ActivarFiltro (FilterOn) a Falso (False) (0).

Nota   Puede guardar un filtro como una consulta haciendo clic en Guardar como consulta en el menú Archivo mientras permanezca en la ventana Filtro por formulario o en la ventana Filtro u orden avanzado.

Cuando la propiedad Filtro (Filter) se establece en la vista Diseño del formulario, Microsoft Access no intenta validar la expresión SQL. Si la expresión SQL no es válida, se producirá un error cuando se aplique el Filtro.


Propiedad BuscarPorFiltro (FilterLookup)

Puede utilizar la propiedad BuscarPorFiltro (FilterLookup) para especificar si los valores deben aparecer en un control de cuadro de texto dependiente cuando utilice la ventana Filtro por formulario.

Valores

La propiedad BuscarPorFiltro (FilterLookup) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Nunca	No se muestran los valores del campo. Puede especificar si los registros  filtrados pueden contener valores Null.	0
Base de datos predeterminada	(Predeterminado) Los valores de los campos se muestran de acuerdo con los valores bajo la sección Valores predeterminados de filtro por formulario de la ficha Editar/Buscar del cuadro de diálogo Opciones, disponible haciendo clic en Opciones en el menú Herramientas.	1
Siempre	Los valores de los campos se muestran siempre.	2
Puede establecer la propiedad BuscarPorFiltro (FilterLookup) utilizando la hoja de propiedades del cuadro de texto, una macro o Visual Basic.

También puede establecer de forma predeterminada esta propiedad utilizando un cuadro de texto con el estilo de control predeterminado del control o el método DefaultControl en Visual Basic.

Comentarios

Si desea limitar los tipos de campos a mostrar, elimine la casilla de verificación apropiada bajo Valores predeterminados de Filtro por formulario en la ficha Modificar/Buscar del cuadro de diálogo Opciones, al que se tiene acceso haciendo clic en Opciones en el menú Herramientas. Si no se muestran las listas de campos, debe incrementar el número en el cuadro No mostrar listas cuando el número de registros leídos sea superior a, de forma que el valor sea mayor o igual al número máximo de registros en cualquier campo del origen de los registros.


Propiedad ActivarFiltro (FilterOn)

Puede utilizar la propiedad ActivarFiltro (FilterOn) para especificar o determinar si se aplica la propiedad Filtro (Filter) para un formulario o informe.

Valores

La propiedad ActivarFiltro (FilterOn) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	Se aplica la propiedad Filtro (Filter) del objeto.	True (–1)
No	(Predeterminado) No se aplica la propiedad Filtro (Filter) del objeto.	False (0)
En el caso de los informes, puede establecer la propiedad ActivarFiltro (FilterOn) utilizando la hoja de propiedades del informe o Visual Basic.

En el caso de los formularios, puede establecer la propiedad ActivarFiltro (FilterOn) en una macro o utilizando Visual Basic. Esta propiedad se puede también establecer haciendo clic en Aplicar filtro  [image]  en la barra de herramientas de la vista Formulario o en la barra de herramientas Filtro/Orden.

Comentarios

Para aplicar un filtro guardado, presione el botón Aplicar filtro para los formularios o aplique el filtro usando una macro o Visual Basic estableciendo la propiedad ActivarFiltro (FilterOn) a Verdadero (True ) para los formularios o informes. En el caso de los informes, se puede establecer la propiedad ActivarFiltro (FilterOn) a Sí en la hoja de propiedades del informe.

El botón Aplicar filtro indica el estado de las propiedades Filtro (Filter) y ActivarFiltro (FilterOn). El botón permanece desactivado hasta que haya un filtro para aplicar. Si se está aplicando un filtro actualmente, el botón Aplicar Filtro estará presionado. Para aplicar un filtro automáticamente cuando se abre un formulario o informe, especifique en el valor de la propiedad del evento OnOpen del formulario o bien una macro que utilice la acción AplicarFiltro (ApplyFilter) o un procedimiento de evento que utilice el método ApplyFilter del objeto DoCmd.

Puede eliminar un filtro haciendo clic en el botón Aplicar Filtro presionado, haciendo clic en Quitar filtro u ordenar en el menú Registros o usando Visual Basic para establecer la propiedad ActivarFiltro (FilterOn) a False. Para los informes, se puede eliminar un filtro estableciendo la propiedad ActivarFiltro (FilterOn) a No en la hoja de propiedades del informe.

Nota   Cuando se crea un nuevo objeto, éste hereda las propiedades OrigenDelRegistro (RecordSource), Filtro (Filter), OrdenarPor (OrderBy) y ActivarOrden (OrderByOn) de la tabla o consulta de la que fue creado. En el caso de los formularios e informes, los filtros heredados no se aplican automáticamente cuando se abre un objeto.


Propiedad OrdenarPor (OrderBy)

Puede utilizar la propiedad OrdenarPor (OrderBy) para especificar cómo desea ordenar los registros en un formulario, consulta, informe o tabla.

Valores

La propiedad OrdenarPor (OrderBy) es una expresión de cadena que representa el nombre del campo o campos por los que desea ordenar los registros. Cuando se utiliza más de un nombre de campo, separe los nombres con una coma (,).

Cuando se establece la propiedad OrdenarPor (OrderBy) introduciendo uno o más nombres de campos, los registros son ordenados en orden ascendente. De forma similar, Visual Basic ordena estos campos en orden ascendente de forma predeterminada.

Si desea ordenar los registros en orden descendente, escriba DESC al final de la expresión de cadena. Por ejemplo, para ordenar los registros de clientes en orden descendente por nombre de contacto, establezca la propiedad OrdenarPor (OrderBy) a "NombreContacto DESC".

Puede establecer la propiedad OrdenarPor (OrderBy) utilizando la hoja de propiedades del objeto, en una macro o Visual Basic.

Comentarios

En el caso de los informes, la propiedad ActivarOrden (OrderByOn) debe ser establecida a Sí, para aplicar el orden especificado por la propiedad OrdenarPor (OrderBy) del objeto. Para los formularios, seleccione el campo por el que desea ordenar los campos y o bien haga clic en el botón de ordenar apropiado en la barra de herramientas o seleccione Ordenar en el menú Registros y haga clic en el comando que corresponda del submenú. También puede establecer la propiedad ActivarOrden (OrderByOn) tanto para Formularios como Informes usando Visual Basic.

Establecer la propiedad OrdenarPor (OrderBy) para un informe abierto hará que se ejecuten los procedimientos de evento Close y Open del informe.

Nota   Cuando se crea un nuevo objeto, éste hereda las propiedades OrigenDelRegistro (RecordSource), Filtro (Filter), OrdenarPor (OrderBy) y ActivarOrden (OrderByOn) de la tabla o consulta desde donde fue creado. En el caso de los formularios e informes, los filtros heredados no se aplican automáticamente cuando se abre un objeto.


Propiedad ActivarOrden (OrderByOn)

Puede utilizar la propiedad ActivarOrden (OrderByOn) para especificar si se aplica el valor de la propiedad OrdenarPor (OrderBy) de un objeto.

Valores

La propiedad ActivarOrden (OrderByOn) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) Se aplica el valor de la propiedad OrdenarPor (OrderBy) cuando se abre el objeto.	True (–1)
No	No se aplica el valor de la propiedad OrdenarPor (OrderBy) cuando se abre el objeto.	False (0)
Para los informes, se puede establecer la propiedad ActivarOrden (OrderByOn) utilizando la hoja de propiedades del informe, en una macro o Visual Basic.

Para todos los demás objetos, se puede establecer la propiedad ActivarOrden (OrderByOn) haciendo clic en un botón de ordenar de la barra de herramientas o usando Visual Basic.

Comentarios

Cuando se crea un nuevo objeto, éste hereda las propiedades OrigenDelRegistro (RecordSource), Filtro (Filter), OrdenarPor (OrderBy), ActivarOrden (OrderByOn) y ActivarFiltro (FilterOn) de la tabla o consulta desde donde fue creado.


Propiedad PermitirFiltros (AllowFilters)

Puede utilizar la propiedad PermitirFiltros (AllowFilters) para especificar si los registros de un formulario pueden filtrarse.

Valores

La propiedad PermitirFiltros (AllowFilters) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	(Predeterminado) Los registros pueden filtrarse.	True (–1)
No	Los registros no pueden filtrarse.	False (0)
Es posible establecer esta propiedad mediante la hoja de propiedades del formulario, una macro o Visual Basic.

Comentarios

Los filtros se utilizan normalmente para ver un subconjunto temporal de los registros de una base de datos. Al utilizar un filtro, se aplican criterios para mostrar sólo los registros que cumplen condiciones específicas. En un formulario Empleados, por ejemplo, puede utilizar un filtro para mostrar sólo los registros de empleados con más de 5 años de servicio. También puede utilizar un filtro para restringir el acceso a los registros que contienen información delicada, como datos financieros o médicos.

Cuando la propiedad PermitirFiltros (AllowFilters) está establecida a No, todas las opciones de filtro del menú Registros, el menú contextual del formulario y la barra de herramientas Formato (Formulario/Informe) están desactivados. Los comandos y botones incluyen:

•	Los comandos Filtro, Aplicar filtro u orden y Quitar filtro u orden.

•	Los comandos Filtrar por formulario, Aplicar filtro u orden y Quitar filtro u orden del menú contextual del formulario.

•	Los botones Filtro por selección  [image], Filtro por formulario  [image] y Aplicar filtro / Quitar filtro  [image]  correspondientes.

Nota   El establecimiento de la propiedad PermitirFiltros (AllowFilters) a No no afecta a las propiedades Filtro (Filter) y ActivarFiltro (FilterOn). Todavía puede utilizar estas propiedades para establecer y quitar filtros. También puede utilizar aún las siguientes acciones o métodos para aplicar y quitar filtros:

Acciones	Métodos
AplicarFiltro	ApplyFilter
AbrirFormulario	OpenForm
MostrarTodosRegistros	ShowAllRecords


Ejemplo de la propiedad PermitirFiltros (AllowFilters)

Este ejemplo muestra una función que alterna entre la activación y la desactivación de la propiedad PermitirFiltros (AllowFilters) de un formulario.

Function AlternarPermitirFiltros() As Integer

Forms!Clientes.AllowFilters = Not Forms!Clientes.AllowFilters

End Function


Propiedad CuadroDeControl (ControlBox)

Puede utilizar la propiedad CuadroDeControl (ControlBox) para especificar si un formulario dispone de un menú Control en la vista Formulario y en la vista Hoja de datos.

Valores

La propiedad CuadroDeControl (ControlBox) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	(Predeterminado) El formulario tiene un menú Control en la vista Formulario y en la vista Hoja de datos.	True (–1)
No	El formulario no tiene un menú Control en la vista Formulario ni en la vista Hoja de datos.	False (0)
Nota   Al establecer la propiedad CuadroDeControl (ControlBox) a No también desaparecen los botones Minimizar, Maximizar y Cerrar de un formulario.

Es posible establecer esa propiedad mediante la hoja de propiedades del formulario, una macro o Visual Basic.

Puede establecer esta propiedad sólo en la vista Diseño del formulario.

Comentarios

Para mostrar un menú Control en un formulario, la propiedad CuadroDeControl (ControlBox) debe establecerse a Sí y la propiedad EstiloDeLosBordes (BorderStyle) del formulario debe establecerse a Fino, Ajustable o Diálogo.

Incluso cuando la propiedad CuadroDeControl (ControlBox) de un formulario está establecida a No, el formulario siempre dispone de un menú Control cuando se abre en la vista Diseño.

Al establecer la propiedad CuadroDeControl (ControlBox) a No, se suprime el menú Control al:

•	Abrir el formulario en la vista Formulario desde la ventana Base de datos.

•	Abrir el formulario desde una macro.

•	Abrir el formulario desde Visual Basic.

•	Abrir el formulario en la vista Hoja de datos.

•	Cambiar a la vista Formulario o la vista Hoja de datos desde la vista Diseño.


Ejemplo de la propiedad CuadroDeControl (ControlBox)

Este ejemplo establece la propiedad CuadroDeControl (ControlBox) del formulario CuadroDiálogoAviso a False (0):

Forms!CuadroDiálogoAviso.ControlBox = False


Propiedad MostrarCuando (DisplayWhen)

Puede utilizar la propiedad MostrarCuando (DisplayWhen) para especificar qué secciones o controles de un formulario desea mostrar en pantalla e imprimir.

Nota   La propiedad MostrarCuando (DisplayWhen) se aplica sólo a las siguientes secciones de formularios: detalle, encabezado de formulario y pie de formulario. También se aplica a todos los controles de un formulario (excepto a los saltos de página).

Valores

La propiedad MostrarCuando (DisplayWhen) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Siempre	(Predeterminado) El objeto aparece en la vista Formulario y cuando se imprime.	0
Sólo al imprimir	El objeto está oculto en la vista Formulario pero aparece al imprimirse.	1
Sólo en pantalla	El objeto aparece en la vista Formulario pero no cuando se imprime.	2
Puede establecer esta propiedad mediante la hoja de propiedades del objeto, una macro o Visual Basic.

Para los controles, puede establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado o el método DefaultControl de Visual Basic.

Comentarios

En muchos casos, determinados controles son útiles sólo en la vista Formulario. Para impedir que Microsoft Access imprima estos controles, puede establecer su propiedad MostrarCuando (DisplayWhen) a Sólo en pantalla. Por ejemplo, es posible que tenga un botón de comando o instrucciones en un formulario que no desea imprimir. O bien es posible que tenga secciones de encabezado de formulario y pie de formulario que no desea mostrar en pantalla pero que desea imprimir. En este caso, debe establecer la propiedad MostrarCuando (DisplayWhen) a Sólo al imprimir.

Sugerencia   Para los informes, utilice los eventos Format y Retreat con el fin de especificar un procedimiento de evento o una macro que establezca la propiedad Visible de los controles que no desea imprimir. También puede cancelar el evento Format o Print para una sección de informe con el fin de impedir que se imprima la sección.


Propiedad Diseño a imprimir

Puede utilizar la propiedad Diseño a imprimir para especificar si un formulario o un informe utiliza las fuentes de la impresora o las de la pantalla.

Valores

La propiedad Diseño a imprimir puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	(Predeterminado para informes) Utiliza las fuentes de impresora.	True (–1)
No	(Predeterminado para formularios) Utiliza las fuentes de pantalla.	False (0)
Puede establecer esta propiedad mediante la hoja de propiedades del formulario o el informe, una macro o Visual Basic.

La propiedad puede establecerse sólo en la vista Diseño del formulario o en la vista Diseño del informe.

Comentarios

Al seleccionar una fuente en Microsoft Access, se selecciona una fuente de pantalla o de impresora, dependiendo del valor de la propiedad Diseño a imprimir. Recuerde que las fuentes de impresora y de pantalla pueden diferir y que los caracteres de la pantalla pueden no ser exactamente iguales a los mostrados en la página impresa.

Sugerencia   Si selecciona una fuente escalable, como una fuente TrueType, los caracteres de la pantalla y de la impresora serán prácticamente iguales.

Las fuentes de pantalla son imágenes de letras, números y símbolos instalados en el sistema para mostrar en la pantalla. Si ha instalado una impresora, es posible que se hayan instalado automáticamente fuentes de pantalla adicionales.

Las fuentes de impresora son las letras, números y símbolos que se utilizan al imprimir un formulario o informe. Las fuentes disponibles son las fuentes que se instalaron como parte de la configuración de impresora y dependen de la impresora instalada.

Si establece la propiedad Diseño a imprimir a Sí, la barra de herramientas Formato (Formulario/Informe) muestra las fuentes y los tamaños de puntos disponibles para la impresora.

Si diseña un formulario o un informe en un sistema con una impresora diferente de la que utiliza normalmente para imprimir, Microsoft Access muestra un mensaje al imprimir el formulario o el informe que le indica que se diseñó para otro tipo de impresora. Si imprime el formulario o el informe de todos modos, es posible que la impresora sustituya algunas fuentes. De forma similar, Microsoft Access puede sustituir fuentes si cambia el valor de la propiedad Diseño a imprimir. Por ejemplo, puede diseñar un formulario o un informe con Diseño a imprimir establecido a No y, a continuación, cambiar el valor a Sí. Puede volver a seleccionar la fuente para cada control con el fin de definir la apariencia del formulario o el informe.


Propiedad BotonesMinMax (MinMaxButtons)

Puede utilizar la propiedad BotonesMinMax (MinMaxButtons) para especificar si los botones Maximizar y Minimizar estarán visibles en un formulario.

Valores

La propiedad BotonesMinMax (MinMaxButtons) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Ninguno	Los botones Maximizar y Minimizar no están disponibles.	0
Minimizar activado	Sólo está visible el botón Minimizar.	1
Maximizar activado	Sólo está visible el botón Maximizar.	2
Ambos activados	(Predeterminado) Tanto el botón Minimizar como el botón Maximizar están visibles.	3
Puede establecer estas propiedades mediante la hoja de propiedades del formulario, una macro o Visual Basic.

Puede establecer la propiedad BotonesMinMax (MinMaxButtons) sólo en la vista Diseño del formulario.

Comentarios

Al hacer clic en el botón Maximizar de un formulario, el formulario se amplía de modo que llene la ventana de Microsoft Access. Al hacer clic en el botón Minimizar de un formulario, se reduce el formulario a una barra de título corta en la parte inferior de la ventana de Microsoft Access.

Para mostrar los botones Maximizar y Minimizar en un formulario, debe establecer la propiedad EstiloDeLosBordes (BorderStyle) a Fino o Ajustable y la propiedad CuadroDeControl (ControlBox) a Sí. Si establece la propiedad EstiloDeLosBordes (BorderStyle) a Ninguno o Diálogo o si establece la propiedad CuadroDeControl (ControlBox) a No, el formulario no tendrá botones Maximizar o Minimizar, independientemente del valor de la propiedad BotonesMinMax (MinMaxButtons).

Incluso cuando la propiedad BotonesMinMax (MinMaxButtons) esté establecida a Ninguno, un formulario siempre tendrá botones Maximizar y Minimizar en la vista Diseño.

Si la propiedad BotonesMinMax (MinMaxButtons) de un formulario está establecida a Ninguno, los comandos Maximizar y Minimizar no están disponibles en el menú Control del formulario.


Propiedad BarraDeMenús (MenuBar)

Puede utilizar la propiedad BarraDeMenús (MenuBar) para especificar la barra de menús que desea utilizar en una base de datos, un formulario o un informe. Estas barras de menús se crean mediante el subcomando Personalizar del comando Barras de herramientas del menú Ver. Para obtener más información acerca de cómo crear barras de herramientas personalizadas, vea Crear una barra de menús personalizada para la base de datos actual.

También puede utilizar la propiedad BarraDeMenús (MenuBar) para especificar la macro de barra de menús que se empleará para mostrar una barra de menús personalizada para una base de datos, un formulario o un informe.

Nota   En versiones anteriores de Microsoft Access, las barras de menús personalizadas se creaban estableciendo la propiedad BarraDeMenús (MenuBar) al nombre de una macro de barra de menús. A continuación, se creaban grupos de macros que contenían los comandos de los menús de esta barra de menús. Esta funcionalidad aún se admite en Microsoft Access 97. No obstante, se recomienda encarecidamente crear barras de menús personalizadas con el nuevo cuadro de diálogo Personalizar, disponible al elegir Barras de herramientas en el menú Ver.

Valores

Introduzca el nombre de la barra de menús que desea mostrar. Si deja el valor de la propiedad BarraDeMenús (MenuBar) en blanco, Microsoft Access muestra la barra de menús incorporada (predeterminada) o la barra de menús global de la aplicación. Si establece la propiedad BarraDeMenús (MenuBar) a un valor que no es el nombre una barra de menús o una macro de barra de menús existente, el formulario o el informe no tendrán una barra de menús (la barra de menús predeterminada no se mostrará).

Puede establecer esta propiedad mediante la hoja de propiedades del objeto, una macro o Visual Basic.

En Visual Basic, establezca esta propiedad mediante una expresión de cadena que sea el nombre de la barra de menús que desea mostrar.

Para mostrar la barra de menús incorporada o la barra de menús global de una base de datos, un formulario o un informe mediante una macro o Visual Basic, establezca esta propiedad a una cadena de longitud cero (" ").

Comentarios

Al utilizar la propiedad BarraDeMenús (MenuBar) con formularios e informes, Microsoft Access muestra la barra de menús especificada cuando se abre el formulario o el informe. Esta barra de menús se muestra siempre que el formulario o el informe tienen el enfoque.

Cuando se utiliza con el objeto Application, la propiedad BarraDeMenús (MenuBar) le permite mostrar una barra de menús personalizada en toda la base de datos. No obstante, si ha establecido la propiedad BarraDeMenús (MenuBar) para un formulario o un informe de la base de datos, la barra de menús personalizada del formulario o el informe se mostrará en lugar de la barra de menús personalizada de la base de datos siempre que el formulario o el informe tenga el enfoque. Cuando el formulario o el informe pierde el enfoque, se muestra la barra de menús personalizada de la base de datos.

Nota   Puede alternar entre la barra de menús personalizada de una base de datos y la barra de menús incorporada presionando CTRL+F11.


Ejemplo de la propiedad BarraDeMenús (MenuBar)

Este ejemplo establece la propiedad BarraDeMenús (MenuBar) a una barra de menús denominada MenúClientes:

Forms!Clientes.MenuBar = "MenúClientes"

Para mostrar la barra de menús incorporada del formulario o la barra de menús global de la aplicación, establezca la propiedad BarraDeMenús (MenuBar) a una cadena de longitud cero (" ").

Forms!Clientes.MenuBar = ""


Propiedad Modal

Puede utilizar la propiedad Modal para especificar si un formulario se abre como un formulario modal. Cuando un formulario se abre como un formulario modal, debe cerrar el formulario para poder mover el enfoque a otro objeto.

Valores

La propiedad Modal puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	El formulario se abre como un formulario modal en la vista Formulario.	True (–1)
No	(Predeterminado) El formulario se abre como un formulario no modal en la vista Formulario.	False (0)
Puede establecer esta propiedad mediante la hoja de propiedades del formulario, una macro o Visual Basic.

Comentarios

Al abrir un formulario modal, las demás ventanas de Microsoft Access se deshabilitan hasta que se cierra el formulario (aunque puede cambiar a otras ventanas de otras aplicaciones). Para deshabilitar menús y barras de herramientas además de otras ventanas, establezca las propiedades Modal y Emergente (PopUp) del formulario a Sí.

Puede utilizar la propiedad EstiloDeLosBordes (BorderStyle) para especificar el tipo de borde que tendrá un formulario. Normalmente, los formularios modales tienen la propiedad EstiloDeLosBordes (BorderStyle) establecida a Diálogo.

Sugerencia   Puede utilizar las propiedades Modal, Emergente (PopUp) y EstiloDeLosBordes (BorderStyle) para crear un cuadro de diálogo personalizado. Puede establecer Modal a Sí, Emergente (PopUp) a Sí y EstiloDeLosBordes (BorderStyle) a Diálogo para los cuadros de diálogo personalizados.

Al establecer la propiedad Modal a Sí, el formulario se convierte en modal sólo cuando:

•	Se abre en la vista Formulario desde la ventana Base de datos.

•	Se abre en la vista Formulario mediante una macro o Visual Basic.

•	Se cambia de la vista Diseño a la vista Formulario.

Cuando el formulario es modal, no puede cambiar a la vista Hoja de datos desde la vista Formulario, aunque puede cambiar a la vista Diseño y, a continuación, a la vista Hoja de datos.

El formulario no es modal en la vista Diseño o en la vista Hoja de datos y tampoco es modal si cambia de la vista Hoja de datos a la vista Formulario.

Nota   Puede utilizar el valor Diálogo del argumento de acción Modo de la ventana de la acción AbrirFormulario para abrir un formulario con sus propiedades Modal y Emergente (PopUp) establecidas a Sí.


Propiedad BotonesDeDesplazamiento (NavigationButtons)

Puede utilizar la propiedad BotonesDeDesplazamiento (NavigationButtons) para especificar si se muestran los botones de desplazamiento y un cuadro de número de registro en un formulario.

Valores

La propiedad BotonesDeDesplazamiento (NavigationButtons) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) El formulario tiene botones de desplazamiento y un cuadro de número de registro.	True (–1)
No	El formulario no tiene botones de desplazamiento ni un cuadro de número de registro.	False (0)
Puede establecer esta propiedad mediante la hoja de propiedades del formulario, una macro o Visual Basic.

Comentarios

Los botones de desplazamiento proporcionan una forma cómoda de desplazarse al registro primero, anterior, siguiente, último o en blanco (nuevo). El cuadro de número de registro muestra el número del registro actual. El número total de registros se muestra junto a los botones de desplazamiento. Puede introducir un número en el cuadro de número de registro para desplazarse a un registro determinado.

Si quita los botones de desplazamiento de un formulario y desea crear sus propios medios de desplazamiento para el formulario, puede crear botones de desplazamiento personalizados y agregarlos al formulario. Para obtener más información acerca de cómo crear botones de desplazamiento personalizados, vea Desplazarse por controles, registros y páginas de formularios utilizando Visual Basic.


Propiedad PaletaDeObjeto (ObjectPalette)

La propiedad PaletaDeObjeto (ObjectPalette) especifica la paleta utilizada en la aplicación para crear:

•	Un objeto OLE contenido en un marco de objeto dependiente, en un gráfico, o en un marco de objeto independiente.

•	Un mapa de bits u otro gráfico que se carga en un botón de comando, control de imagen o en un botón de alternar usando la propiedad Imagen (Picture).

Valores

Microsoft Access establece el valor de la propiedad PaletaDeObjeto (ObjectPalette) a un tipo de datos String que contiene la información de la paleta. Puede utilizar este valor para establecer el valor de la propiedad PaletaDePintura (PaintPalette) para un formulario o informe.

Para los siguientes objetos, vistas, y controles, el valor de la propiedad PaletaDeObjeto (ObjectPalette) es de sólo lectura. Este valor de la propiedad no está disponible para estos controles en otras vistas.

Objeto	Vista	Control
Formularios	Vista Diseño del formulario y vista Formulario	Botón de comando, gráfico, control de imagen, botón de alternar, y marco de objeto independiente.
	Vista Formulario	Marco de objeto dependiente.
Informes	Vista Diseño del informe	Botón de comando, gráfico, control de imagen, botón de alternar y marco de objeto independiente. El valor de esta propiedad no está disponible para un marco de objeto dependiente en todas las vistas en un informe.
Sólo puede usar el valor de esta propiedad en una macro o en Visual Basic.

Si la aplicación asociada con el objeto OLE, mapa de bits, u otro gráfico no tiene asociado una paleta, la propiedad PaletaDeObjeto (ObjectPalette) se establece a una cadena de longitud cero.

Comentarios

El valor de la propiedad PaletaDelObjeto (ObjectPalette) hace que la paleta de la aplicación asociada al objeto OLE, mapa de bits, u otro gráfico contenido en un control esté disponible para la propiedad PaletaDePintura (PaintPalette) de un formulario o informe. Por ejemplo, para hacer que la paleta utilizada en Microsoft Graph esté disponible cuando esté diseñando un formulario en Microsoft Access, establezca la propiedad PaletaDePintura (PaintPalette) del formulario al valor PaletaDelObjeto (ObjectPalette) de un control de gráfico existente.

Nota   Windows sólo puede tener activa una paleta de colores a la vez. Microsoft Access le permite tener múltiples gráficos en un formulario, usando cada uno una paleta de colores diferente. Las propiedades PaletaDePintura (PaintPalette) y OrigenDeLaPaleta (PaletteSource) permiten especificar qué paleta de colores debe usar un formulario cuando muestra gráficos.


Ejemplo de las propiedades PaletaDeObjeto (ObjectPalette) y PaletaDePintura (PaintPalette)

El siguiente ejemplo establece la propiedad PaletaDePintura (PaintPalette) del formulario Marina a la propiedad PaletaDeObjeto (ObjectPalette) del control Océano del formulario MostrarImágenes, . (Océano puede ser un marco de objeto dependiente, un botón de comando, un gráfico, un botón de alternar o un marco de objeto independiente.)

Forms!Marina.PaintPalette = Forms!MostrarImágenes!Océano.ObjectPalette

Las propiedades PaletaDelObjeto (ObjectPalette),y PaletaDePintura (PaintPalette) son útiles para alterar mediante programa la paleta de colores que usa un formulario abierto en tiempo de ejecución. Un uso común de estas propiedades es establecer la propiedad PaletaDePintura (PaintPalette) del formulario actual a la paleta de un gráfico mostrado en un control que tiene el enfoque.

Por ejemplo puede tener un formulario con una imagen del océano, mostrando muchos tonos de azul, y una imagen de una puesta de sol, que muestra muchos tonos de rojo. Como Windows sólo permite tener activa una paleta de colores a la vez, una de las imágenes tendrá mucho mejor aspecto que la otra. El siguiente ejemplo usa un evento Enter de un control para establecer en la propiedad PaletaDePintura (PaintPalette) del formulario la propiedad PaletaDelObjeto (ObjectPalette) del control de forma que el gráfico que tenga el enfoque tenga una apariencia óptima

Sub ImagenOcéano_Enter()

Me.PaintPalette = Me!ImagenOcéano.ObjectPalette

End Sub

Sub ImagenOcaso_Enter()

Me.PaintPalette = Me!ImagenOcaso.ObjectPalette

End Sub


Propiedad PaletaDePintura (PaintPalette)

Puede usar la propiedad PaletaDePintura (PaintPalette) para especificar una paleta para ser utilizada en un formulario o informe.

Valores

Puede establecer la propiedad PaletaDePintura (PaintPalette) usando una macro o en Visual Basic. El valor de la propiedad debe ser un tipo de datos String que contenga la información de la paleta.

Puede establecer la propiedad PaletaDePintura (PaintPalette) asignando el valor de la propiedad PaletaDeObjeto (ObjectPalette) a la propiedad PaletaDePintura (PaintPalette) en una macro o Visual Basic, estableciendo la propiedad OrigenDeLaPaleta (PaletteSource) (en cuyo caso Microsoft Access automáticamente establece la propiedad PaletaDePintura (PaintPalette) a OrigenDeLaPaleta (PaletteSource)), o estableciendo la propiedad PaletaDePintura (PaintPalette) de un formulario o informe a la propiedad PaletaDePintura (PaintPalette) de otro formulario o informe.

Para un formulario, puede establecer la propiedad PaletaDePintura (PaintPalette) en la vista Diseño del formulario y en la vista Formulario.

Para un informe, puede establecer la propiedad PaletaDePintura (PaintPalette) sólo en la vista Diseño del informe

Comentarios

Cuando establece la propiedad PaletaDePintura (PaintPalette), Microsoft Access hace una copia de la paleta que usted especifica y la guarda con el formulario o informe. La paleta está entonces disponible si modifica ese formulario o informe.

Los cambios en la paleta que especificó cuando estableció la propiedad PaletaDePintura (PaintPalette) no afectan a la copia de la paleta guardada con el formulario o el informe. Si desea actualizar la copia de la paleta guardada con el formulario o con el informe, debe volver a ejecutar el código o la macro que establece la propiedad PaletaDePintura (PaintPalette) o restablecer la propiedad OrigenDeLaPaleta (PaletteSource) cuando se abre el formulario o informe.

Cuando establece la propiedad PaletaDePintura (PaintPalette) para un formulario o informe, Microsoft Access actualiza automáticamente su propiedad OrigenDeLaPaleta (PaletteSource). A la inversa, cuando establece la propiedad OrigenDeLaPaleta (PaletteSource) para un formulario o informe, la propiedad PaletaDePintura (PaintPalette) también se actualiza. Por ejemplo, cuando especifica una paleta personalizada con la propiedad PaletaDePintura (PaintPalette), el valor de la propiedad OrigenDeLaPaleta (PaletteSource) se cambia a Personalizada (Custom). La propiedad PaletaDePintura (PaintPalette) (la cual está disponible sólo en una macro o en Visual Basic) se utiliza para establecer la paleta para el formulario o informe. La propiedad OrigenDeLaPaleta (PaletteSource) proporciona un medio de establecer la paleta para el formulario o informe en la hoja de propiedades utilizando un archivo de gráfico existente.

Nota   Windows sólo puede tener una paleta de colores activa a la vez. Microsoft Access le permite tener múltiples gráficos en un formulario, usando cada uno una paleta de colores diferente. Las propiedades PaletaDePintura (PaintPalette) y OrigenDeLaPaleta (PaletteSource) le permiten especificar qué paleta de colores debe usar un formulario cuando muestra gráficos.

Puede utilizar la propiedad PaletaDeObjeto (ObjectPalette) para crear la paleta de una aplicación asociada con un objeto OLE, mapa de bits, u otro gráfico contenido en un control de un formulario o informe disponible para la propiedad PaletaDePintura (PaintPalette). Por ejemplo, para hacer que esté disponible la paleta utilizada en Microsoft Graph cuando esté diseñando un formulario en Microsoft Access, establezca la propiedad PaletaDePintura (PaintPalette) del formulario al valor PaletaDeObjeto (ObjectPalette) de un control de gráfico existente.


Propiedad OrigenDeLaPaleta (PaletteSource)

Puede usar la propiedad OrigenDeLaPaleta (PaletteSource) para especificar la paleta para un formulario o informe.

Valores

Escriba la ruta de acceso y el nombre del archivo de uno de los siguientes tipos de archivo:

•	.dib (archivo de mapa de bits independiente del dispositivo)

•	.pal (archivo de paleta de Windows)

•	.ico (archivo de icono de Windows)

•	.bmp (archivo de mapa de bits de Windows)

•	archivo .wmf o .emf, u otros archivos de gráficos para los que dispone de un filtro de gráficos

El valor predeterminado es (Predeterminada), que especifica la paleta incluida con Microsoft Access. Si cambia este valor escribiendo una ruta de acceso y un nombre de archivo, el valor de la propiedad muestra (Personalizada).

Puede establecer esta propiedad usando la hoja de propiedades, del formulario o informe, una macro, o Visual Basic.

Para un formulario, puede establecer la propiedad OrigenDeLaPaleta (PaletteSource) en la vista Diseño del formulario y en la vista Formulario. El valor de la propiedad no está disponible en otras vistas.

Para un informe, sólo puede establecer la propiedad OrigenDeLaPaleta (PaletteSource) en la vista Diseño del informe. La propiedad establecida no está disponible en otras vistas.

Comentarios

Windows sólo puede tener una paleta de colores activa a la vez. Microsoft Access le permite tener múltiples gráficos en un formulario, usando cada uno una paleta de colores diferente. Las propiedades OrigenDeLaPaleta (PaletteSource) y PaletaDePintura (PaintPalette) le permiten especificar qué paleta de colores debe usar un formulario cuando muestra gráficos.

Cuando establece la propiedad OrigenDeLaPaleta (PaletteSource) para un formulario o informe, Microsoft Access actualiza automáticamente su propiedad PaletaDePintura (PaintPalette). A la inversa, cuando establece la propiedad PaletaDePintura (PaintPalette) para un formulario o informe, la propiedad OrigenDeLaPaleta (PaletteSource) también se actualiza. Por ejemplo, cuando especifica una paleta personalizada con la propiedad PaletaDePintura (PaintPalette), el valor de la propiedad OrigenDeLaPaleta (PaletteSource) se cambia a (Personalizada). La propiedad PaletaDePintura (PaintPalette) (la cual está sólo disponible en una macro o en Visual Basic) se utiliza para establecer la paleta para el formulario o informe. La propiedad OrigenDeLaPaleta (PaletteSource) le da el camino para establecer la paleta del formulario o informe en la hoja de propiedades utilizando un archivo de gráfico existente.


Propiedad Emergente (PopUp)

Puede usar la propiedad Emergente (PopUp) para especificar si un formulario se abre como un formulario emergente. Por ejemplo, establece la propiedad Emergente (PopUp) del formulario a Sí, la propiedad Modal a Sí, y la propiedad EstiloDeLosBordes (BorderStyle) a Dialog para crear un cuadro de diálogo personalizado.

Valores

Los valores de la propiedad Emergente (PopUp) son:

Valor	Descripción	Visual Basic
Sí	El formulario se abre como un formulario emergente en la vista Formulario. Permanece por encima de todas las demás ventanas de Microsoft Access.	True (-1)
No	(Predeterminado) El formulario no es un formulario emergente.	False (0)
Puede establecer esta propiedad usando la hoja de propiedades, una macro, o Visual Basic.

La propiedad Emergente (PopUp) sólo se puede establecer en la vista Diseño del formulario.

Comentarios

Para especificar el tipo de borde que desea para un formulario emergente, use la propiedad EstiloDeLosBordes (BorderStyle). Habitualmente se establece "Delgado" en la propiedad EstiloDeLosBordes (BorderStyle) para los formularios emergentes.

Sugerencia   Puede usar las propiedades Emergente (PopUp), Modal y EstiloDeLosBordes (BorderStyle) para crear un cuadro de diálogo personalizado. Establezca la propiedad Modal a Sí, la propiedad Emergente (PopUp) a Sí, y la propiedad EstiloDeLosBordes (BorderStyle) a Diálogo para cuadros de diálogo personalizados.

Establecer la propiedad Emergente (PopUp) a Sí hace que el formulario sea un formulario emergente sólo cuando haga algo de lo siguiente:

•	Abrirlo en la vista Formulario desde la ventana Base de datos.

•	Abrirlo en vista Formulario utilizando una macro o Visual Basic.

•	Cambiar de la vista Diseño a la vista Formulario.

Cuando se establece la propiedad Emergente (PopUp) a Sí, no se puede cambiar a las otras vistas desde la vista Formulario, porque la barra de herramientas del formulario no está disponible (No puede cambiar un formulario emergente desde la vista Formulario a la vista Hoja de datos, incluso en una macro o en Visual Basic). Debe cerrar el formulario y volverlo a abrir en la vista Diseño o en la vista Hoja de datos.

El formulario no es un formulario emergente en la vista Diseño y tampoco lo es en la vista Hoja de datos, además no es un formulario emergente si cambia desde la vista Hoja de datos a la vista Formulario.

Nota   Puede usar el valor Diálogo del argumento Modo de ventana de la acción AbrirFormulario para abrir un formulario con sus propiedades Emergente (PopUp) y Modal establecidas a Sí.

Sugerencia   Cuando maximice una ventana en Microsoft Access, todas las otras ventanas también se maximizarán cuando las abra o se cambie a ellas. Sin embargo, los formularios emergentes no serán maximizados. Si desea que un formulario mantenga su tamaño cuando maximice otras ventanas, establezca su propiedad Emergente (PopUp) a Sí.


Propiedad MenúDeMétodoAbreviado (ShortcutMenu)

Puede usar la propiedad MenúDeMétodoAbreviado (ShortcutMenu) para especificar si se muestra o no un menú contextual cuando haga clic con el botón secundario en un objeto del formulario. Por ejemplo, puede desear desactivar un menú contextual para evitar que el usuario cambie el origen del registro seleccionado utilizando uno de los comandos de filtrado en el menú contextual del formulario.

Valores

Los valores de la propiedad MenúDeMétodoAbreviado (ShortcutMenu) son:

Valor	Descripción	Visual Basic
Sí	(Predeterminado) Se muestran los menús de método abreviado.	True (-1)
No	No se muestran los menús de método abreviado.	False (0)
Puede establecer esta propiedad usando la hoja de propiedades, una macro, o Visual Basic.

Comentarios

Esta propiedad controla la presentación de los menús de método abreviado de un formulario y de cada uno de sus controles. Si la propiedad MenúDeMétodoAbreviado (ShortcutMenu) se establece a No, no se mostrarán los menús de método abreviado cuando haga clic con el botón secundario del mouse en cualquiera de los controles.

Si está desarrollando un asistente, es posible que desee ocultar los menús de método abreviado en sus formularios de asistente para evitar que el usuario los vea o los utilice. Esto es especialmente cierto en formularios que muestran elecciones. Por ejemplo, se ha establecido No en la propiedad MenúDeMétodoAbreviado (ShortcutMenu) del formulario Inicio de la base de datos de ejemplo Neptuno. Esto evita que los usuarios vean los menús de método abreviado del formulario o de los controles del formulario.


Ejemplo de la propiedad MenúDeMétodoAbreviado (ShortcutMenu)

El siguiente ejemplo desactiva el menú contextual para el formulario Factura y sus controles:

Forms!Factura.ShortcutMenu = False


Propiedad ÍndiceDeTabulación (TabIndex)

Puede usar la propiedad ÍndiceDeTabulación (TabIndex) para especificar el lugar de un control en el orden de tabulación de un formulario.

Nota   La propiedad ÍndiceDeTabulación (TabIndex) sólo se aplica a los controles de un formulario no a los controles de un informe.

Valores

Puede establecer la propiedad ÍndiceDeTabulación (TabIndex) a un Entero que represente la posición del control dentro del orden de tabulación del formulario. Los valores válidos van desde 0 para la primera posición de tabulación, hasta el número total de controles menos 1 para la última posición de tabulación. Por ejemplo, si un formulario tiene tres controles, y cada uno de ellos tiene la propiedad ÍndiceDeTabulación (TabIndex) los valores válidos de la propiedad ÍndiceDeTabulación (TabIndex) son 0, 1, y 2.

Establecer un Entero menor que 0 en la propiedad ÍndiceDeTabulación (TabIndex) produce un error.

Puede establecer esta propiedad usando la hoja de propiedades, una macro, o Visual Basic.

Nota   También puede establecer el orden de tabulación de los controles de un formulario utilizando el comando Orden de tabulación del menú Ver. Esto también establece la propiedad OrdenDeTabulación (TabOrder) para los controles.

Comentarios

De forma predeterminada, Microsoft Access asigna a los controles un orden de tabulación que coincide con el orden con el que usted los creó en un formulario. Cada nuevo control se coloca el último del orden de tabulación. Si cambia el valor de la propiedad ÍndiceDeTabulación (TabIndex) de un control para ajustar el orden de tabulación, Microsoft Access vuelve a numerar automáticamente los valores de la propiedad ÍndiceDeTabulación (TabIndex) de los otros controles para reflejar las inserciones y eliminaciones.

En la vista Formulario, los controles invisibles o desactivados permanecen en el orden de tabulación pero se  pasan por alto cuando presiona la tecla TAB.

Cambiar el orden de tabulación de otros controles del formulario no afecta a lo que sucede cuando presiona la tecla de acceso del control. Por ejemplo, si ha creado una tecla de acceso para la etiqueta de un cuadro de texto, el enfoque se moverá al cuadro de texto cada vez que presione la tecla de acceso de la etiqueta,  incluso aunque cambie el valor de la propiedad ÍndiceDeTabulación (TabIndex) para el cuadro de texto.

Si presiona la tecla de acceso de un control, como por ejemplo una etiqueta que no tiene la propiedad ÍndiceDeTabulación (TabIndex) (y no está en el orden de tabulación), el enfoque se mueve al siguiente control en el orden de tabulación que pueda recibir el enfoque.


Ejemplo de la propiedad ÍndiceDeTabulación (TabIndex)

El siguiente ejemplo invierte el orden de tabulación de un botón de comando y un cuadro de texto. Como CuadroDeTexto1 se creó primero, tiene un valor de 0 en la propiedad ÍndiceDeTabulación (TabIndex) y Comando1 tiene un valor de 1.

Sub Form_Click ()

Me!Comando1.TabIndex = 0

Me!CuadroDeTexto1.TabIndex = 1

End Sub


Propiedad PuntoDeTabulación (TabStop)

Puede utilizar la propiedad PuntoDeTabulación (TabStop) para especificar si puede utilizar la tecla TAB para mover el enfoque a un control en la vista Formulario.

Nota   La propiedad PuntoDeTabulación (TabStop) sólo se aplica a los controles de un formulario, no a controles de un informe.

Esta propiedad no se aplica a los controles casillas de verificación, botones de opción, o botones de alternar cuando aparecen en un grupo de opción. Se aplica sólo al grupo de opción en concreto.

Valores

Los valores de la propiedad PuntoDeTabulación (TabStop) son:

Valor	Descripción	Visual Basic
Sí	(Predeterminado) Puede mover el enfoque al control presionando la tecla TAB.	True (-1)
No	No puede mover el enfoque al control presionando la tecla TAB.	False (0)
Puede establecer esta propiedad usando la hoja de propiedades, una macro, o Visual Basic.

Comentarios

Cuando crea un control en un formulario, Microsoft Access le asigna automáticamente una posición en el orden de tabulación del formulario al control. Cada nuevo control se coloca el último en el orden de tabulación. Si desea evitar que un control esté disponible cuando se desplaza por los controles de un formulario mediante la tecla TAB, establezca la propiedad PuntoDeTabulación (TabStop) del control a No.

En la vista Formulario, los controles ocultos o desactivados permanecen en el orden de tabulación pero se pasan por alto cuando se desplaza por los controles mediante la tecla TAB, incluso aunque en sus propiedades PuntoDeTabulación (TabStop) esté establecido Sí.

Mientras esté establecida a Sí la propiedad Activado (Enabled) de un control, puede hacer clic en el control o usar una tecla de acceso para seleccionarlo, independientemente del valor de su propiedad PuntoDeTabulación (TabStop). Por ejemplo, puede establecer a No la propiedad PuntoDeTabulación (TabStop) de un botón de comando para evitar que los usuarios seleccionen el botón presionando la tecla TAB. Sin embargo, siguen pudiendo hacer clic en el botón de comando para elegirlo.


Propiedad InformaciónAdicional (Tag)

Puede usar la propiedad InformaciónAdicional (Tag) para guardar cualquier información adicional sobre un formulario, informe, sección, o control que necesite su aplicación.

Valores

Puede escribir una expresión de cadena de hasta 2048 caracteres de largo. El valor predeterminado es una cadena de longitud cero (" ").

Puede establecer esta propiedad usando la hoja de propiedades, una macro, o Visual Basic.

Comentarios

A diferencia de otras propiedades, la propiedad InformaciónAdicional (Tag) no afecta a ninguno de los atributos del objeto.

Puede usar esta propiedad para asignar una cadena de identificación a un objeto sin afectar a ningún otro de los valores de sus propiedades ni causar efectos secundarios. La propiedad InformaciónAdicional (Tag) es útil cuando necesita comprobar la identidad de un formulario, informe, sección, o control que se pasa como una variable a un procedimiento.


Ejemplo de la propiedad InformaciónAdicional (Tag)

El siguiente ejemplo usa la propiedad InformaciónAdicional (Tag) para mostrar mensajes personalizados acerca de los controles de un formulario. Cuando un control tiene el enfoque, se muestra un texto descriptivo en un control de etiqueta llamado MensajeEtiqueta. Usted especifica el texto del mensaje estableciendo una corta cadena de texto en la propiedad InformaciónAdicional (Tag) de cada control. Cuando un control recibe el enfoque, se asigna su propiedad InformaciónAdicional (Tag) a la propiedad Título (Caption) de la etiqueta del control. Este ejemplo muestra el texto descrito para un cuadro de texto llamado txtDescripción y un botón de comando llamado cmdBotón en un formulario.

Sub Carga_Formulario()

Dim frmMensajeForm As Form

Set frmMensajeForm = Forms!Form1

frmMensajeForm!MensajeEtiqueta.Caption = ""	 ' Borra el texto.

frmMensajeForm!txtDescripción.Tag = "Texto de ayuda para el cuadro de texto."

frmMensajeForm!cmdBotón.Tag = " Texto de ayuda para el botón de comando."

End Sub

Sub txtDescripción_ObtenerEnfoque()

Me!MensajeEtiqueta.Caption = Me!txtDescripción.Tag

 ' Propiedad InformaciónAdicional (Tag) se establece como título.

End Sub

Sub txtDescripción_PerderEnfoque ()

Me!MensajeEtiqueta.Caption = ""

End Sub

Sub cmdBotón_ObtenerEnfoque()

Me!MensajeEtiqueta.Caption = Me!cmdBotón.Tag

 ' Propiedad InformaciónAdicional (Tag) se establece como título.

End Sub

Sub cmdBotón_PerderEnfoque()

Me.MensajeEtiqueta.Caption = " "

End Sub


Propiedad AjusteDeTamañoAutomático (AutoResize)

Puede usar la propiedad AjusteDelTamañoAutomático (AutoResize) para especificar si una ventana Formulario se abre con su tamaño ajustado automáticamente para mostrar completos los registros.

Valores

Los valores de la propiedad AjusteDelTamañoAutomático (AutoResize) son:

Valor	Descripción	Visual Basic
Sí	(Predeterminado) El tamaño de la ventana Formulario se ajusta automáticamente para mostrar completos los registros.	True (–1)
No	Cuando se abre, la ventana Formulario tiene el último tamaño guardado. Para guardar el tamaño de una ventana, abra el formulario, ajuste el tamaño de la ventana, guarde el formulario haciendo clic en Guardar en el menú Archivo , y cierre el formulario. La próxima vez que abra el formulario, tendrá el tamaño de ventana que guardó.	False (0)
Puede establecer esta propiedad utilizando la hoja de propiedades del formulario, en una macro, o en Visual Basic.

El valor de esta propiedad sólo se puede establecer en la vista Diseño.

Comentarios

La ventana Formulario ajusta su tamaño sólo si se abre en la vista Formulario. Si primero abre el formulario en la vista Diseño o en la vista Hoja de datos y después cambia a la vista Formulario, la ventana Formulario no ajustará su tamaño.

Si se establece a No la propiedad AjusteDelTamañoAutomático (AutoResize) de un formulario y se establece a Si su propiedad CentradoAutomático (AutoCenter), y si hace algún cambio en la vista Diseño y no cambia a la vista Formulario antes de guardar el formulario, Microsoft Access recortará los bordes derecho e inferior la próxima vez que abra el formulario.

Si hace algún cambio en la vista Diseño a un formulario cuya propiedad AjusteDelTamañoAutomático (AutoResize) está establecida a No y cuya propiedad CentradoAutomático (AutoCenter) está establecida a Sí, debería cambiar a la vista Formulario antes de guardar el formulario. De lo contrario, Microsoft Access corta el formulario a la derecha y los botones del borde la próxima vez que abra el formulario.

Si la propiedad CentradoAutomático (AutoCenter) está establecida a No, una ventana Formulario se abre con la esquina superior izquierda en la misma ubicación que estaba cuando lo cerró.


Propiedad Cancelar (Cancel)

Puede usar la propiedad Cancelar (Cancel) para especificar si un botón de comando es también el botón Cancelar en un formulario.

Valores

La propiedad Cancelar (Cancel) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	El botón de comando es el botón Cancelar.	True (–1)
No	(Predeterminada) El botón de comando no es el botón Cancelar.	False (0)
Puede establecer esta propiedad utilizando la hoja de propiedades del botón de comando, en una macro, o en Visual Basic.

Comentarios

Al establecer la propiedad Cancelar (Cancel) a Sí crea el botón de comando Cancelar en el formulario. Sin embargo, todavía debe escribir la macro o el procedimiento de evento de Visual Basic que realice la acción o acciones que desee que ejecute el botón Cancelar (por ejemplo, cerrar el formulario sin guardar los cambios). Establezca la propiedad del evento AlHacerClic (OnClick) del botón de comando al nombre de la macro o procedimiento de evento.

Cuando el valor de la propiedad Cancelar (Cancel) de un botón de comando es Sí y está activa la ventana Formulario, el usuario puede elegir el botón de comando presionando ESC, presionando ENTRAR cuando el botón de comando tenga el enfoque, o haciendo clic en el botón de comando.

Nota   Si un cuadro de texto tiene el enfoque cuando el usuario presiona ESC, todos los cambios realizados en los datos del cuadro de texto se perderán y se restauran los datos originales.

Cuando la propiedad Cancelar (Cancel) de un botón de comando en un formulario está establecida a Sí, en todos los otros botones de comando del formulario se establece automáticamente a No.

Sugerencia   Para un formulario que contemple operaciones irreversibles, tales como eliminaciones, es buena idea hacer que el botón Cancelar, sea el botón de comando predeterminado. Para hacer esto establezca a “Sí” tanto la propiedad Cancelar (Cancel) como la propiedad Predeterminado (Default).


Propiedad Predeterminado (Default)

Puede utilizar la propiedad Predeterminado (Default) para especificar si un botón de comando es el botón predeterminado en un formulario.

Valores

Los valores de la propiedad Predeterminado (Default) son:

Valor	Descripción	Visual Basic
Sí	El botón de comando es el botón predeterminado.	True (–1)
No	(Predeterminado) El botón de comando no es el botón predeterminado.	False (0)
Puede establecer esta propiedad utilizando la hoja de propiedades del botón de comando, en una macro, o en Visual Basic.

Comentarios

Cuando el valor de la propiedad Predeterminado (Default) del botón de comando es “Sí” y está activa la ventana Formulario, el usuario puede elegir el botón de comando presionando ENTRAR (si ningún otro botón de comando tiene el enfoque) y también haciendo clic en el botón de comando.

Sólo un botón de comando de un formulario puede ser el botón predeterminado. Cuando en la propiedad Predeterminado (Default) de un botón de comando está establecido Sí, en todos los otros botones de comando se establece automáticamente No.

Sugerencia Para un formulario que contemple operaciones irreversibles, tales como eliminaciones, es buena idea hacer que el botón Cancelar, sea el botón de comando predeterminado. Para hacer esto establezca “Sí” tanto en la propiedad Predeterminado (Default) como en la propiedad Cancelar (Cancel).


Propiedades PresentaciónPredeterminada (DefaultView) y PresentacionesPermitidas (ViewsAllowed)

•	Puede utilizar la propiedad PresentaciónPredeterminada (DefaultView) para especificar la presentación inicial de un formulario.

•	Puede utilizar la propiedad PresentacionesPermitidas (ViewsAllowed) para especificar si los usuarios pueden o no cambiar entre la vista Hoja de datos y la vista Formulario haciendo clic en los comandos Vista Formulario o Vista Hoja de datos en el menú Ver o haciendo clic en la flecha del botón Ver y haciendo clic en Vista Formulario o Vista Hoja de datos.

Valores

Los valores de la propiedad PresentaciónPredeterminada (DefaultView) son.

Valor	Descripción	Visual Basic
Formulario simple	(Predeterminado) Muestra un registro a la vez.	0
Formularios continuos	Muestra múltiples registros (tantos como quepan en la ventana actual), cada uno en su propia copia de la sección de detalle del formulario.	1
Hoja de datos	Muestra los campos del formulario organizados en filas y columnas como una hoja de calculo.	2
Los valores de la propiedad PresentacionesPermitidas (ViewsAllowed) son:

Valor	Descripción	Visual Basic
Ambas	(Predeterminado) los usuarios pueden cambiar entre la vista Formulario y la vista Hoja de datos.	0
Formulario	Los usuarios no pueden cambiar a la vista Hoja de datos desde la vista Formulario.	1
Hoja de datos	Los usuarios no pueden cambiar a la vista Formulario desde la vista Hoja de datos.	2
La vista Diseño está siempre disponible (a menos que los permisos se hayan establecido de otra forma).

Puede establecer estas propiedades utilizando la hoja de propiedades, en una macro o en Visual Basic.

Comentarios

Las vistas mostradas en la lista del botón Ver y en el menú Ver dependen del valor de la propiedad PresentacionesPermitidas (ViewsAllowed). Por ejemplo, si la propiedad PresentacionesPermitidas (ViewsAllowed) está establecida a Hoja de datos, la Vista Formulario está desactivada en la lista del botón Ver y en el menú Ver.

La combinación de estas propiedades crea las siguientes condiciones.

Vista predeterminada	Vistas permitidas	Descripción
Formularios simples o continuos u Hoja de datos	Ambas	Los usuarios pueden cambiar entre la vista Formulario y la vista Hoja de datos.
Formularios simples o continuos	Formulario	Los usuarios no pueden cambiar desde la vista Formulario a la vista Hoja de datos.
Formularios simples o continuos	Hoja de datos	Los usuarios pueden cambiar desde la vista Formulario a la vista Hoja de datos, pero no pueden volver a aquel.
Hoja de datos	Formulario	Los usuarios pueden cambiar desde la vista Hoja de datos a la vista Formulario pero no pueden volver a aquel.
Hoja de datos	Hoja de datos	Los usuarios no pueden cambiar desde la vista Hoja de datos a la vista Formulario.


Propiedades LíneaX (GridX) y LíneaY (GridY)

Puede usar las propiedades LíneaX (GridX) y LíneaY (GridY) para especificar las divisiones horizontales y verticales de la cuadrícula de alineación en la vista Diseño del formulario y en la vista Diseño del informe.

Valores

Escriba un Entero entre 1 y 64 que represente el número de subdivisiones por unidad de medida. Si el cuadro Sistema de medida tiene el valor EE.UU. en la ficha Número del cuadro de diálogo Propiedades de configuración regional del Panel de control de Windows, el valor predeterminado es 10 en la propiedad LíneaX (GridX) (horizontal) y 12 en la propiedad LíneaY (GridY) (vertical).

Puede establecer estas propiedades utilizando la hoja de propiedades, en una macro o en Visual Basic.

En Visual Basic, estas propiedades se establecen usando una expresión numérica

Comentarios

Las propiedades LíneaX (GridX) y LíneaY (GridY) proporcionan control sobre la ubicación y alineación en un formulario o informe. Puede ajustar la cuadrícula para mayor o menor precisión. Para ver la cuadrícula, haga clic en Cuadrícula del menú Ver. Si el valor de la propiedad LíneaX (GridX) o de la propiedad LíneaY (GridY) es mayor que 24, los puntos de la cuadrícula desaparecen de la vista (aunque todavía se muestran las líneas de la cuadrícula).


Propiedad Pintando (Painting)

Puede usar la propiedad Pintando (Painting) para especificar si los formularios y los informes se vuelven a pintar o no.

Valores

Los valores de la propiedad Pintando (Painting) son:

Valor	Descripción
True (–1)	(Predeterminado) El formulario o informe se repinta.
False (0)	El formulario o informe no se repinta.
Puede establecer esta propiedad utilizando una macro o Visual Basic.

Esta propiedad puede establecerse y aplicarse sólo en la vista Formulario y no está disponible en las otras vistas.

Comentarios

La propiedad Pintando (Painting) es similar a la acción Eco. Sin embargo, la propiedad Pintando (Painting) evita que se repinte un único formulario o informe, mientras que la acción Eco evita que se repinten todas las ventanas abiertas de una aplicación.

Establecer a False la propiedad Pintando (Painting) de un formulario o informe impide también que se repinten todos los controles de ese formulario o informe (excepto los controles de subformulario o subinforme). Para evitar que se repinte un control de un formulario o subinforme, debe establecer a False la propiedad Pintando (Painting) del subformulario o subinforme. (Observe que establece la propiedad Pintando (Painting) para el subformulario o subinforme, no para el control del subformulario o subinforme.)

La propiedad Pintando (Painting) de forma automática tiene el valor True si el formulario o informe obtiene o pierde el enfoque. Puede establecer la propiedad a False mientras trabaje en un formulario o informe si no desea ver los cambios del formulario o informe o de sus controles. Por ejemplo, si un formulario tiene un conjunto de controles que automáticamente cambian de tamaño cuando cambia el tamaño del formulario y no desea que el usuario vea el movimiento de cada control de forma individual, puede desactivar Pintando (Painting), y activarlo de nuevo después de mover todos los controles.


Ejemplo de la propiedad Pintando (Painting)

Este ejemplo usa la propiedad Pintando (Painting) para habilitar o desactivar el pintado de un formulario dependiendo de si la variable ActivarPintado se pone en True (-1) o en False (0). Si Pintado está desactivado en el formulario, Microsoft Access muestra el icono del reloj de arena mientras Pintando está desactivado.

Function HabilitarPintado(NombreDeForm As Form, ByVal ActivarPintado As Integer) As Integer

NombreDeForm.Painting = ActivarPintado

If ActivarPintado= False Then	  ' Se desactiva el pintado del formulario.

DoCmd.Hourglass True	  ' Mostrar el icono del reloj de arena.

Else

DoCmd.Hourglass False	  ' No mostrar el icono del reloj de arena.

End If

End Function


Propiedad SelectoresDeRegistro (RecordSelectors)

Puede usar la propiedad SelectoresDeRegistro (RecordSelectors) para especificar si un formulario muestra o no selectores de registros en la vista Formulario.

Valores

Los valores de la propiedad SelectoresDeRegistro (RecordSelectors) son:

Valor	Descripción	Visual Basic
Sí	(Predeterminado) Cada registro tiene un selector de registros.	True (-1)
No	Ningún registro tiene un selector de registros.	False (0)
Puede establecer esta propiedad utilizando la hoja de propiedades del formulario, una macro o en Visual Basic.

Comentarios

Puede usar está propiedad para eliminar los selectores de registro de cuando crea o usa un formulario como un cuadro de diálogo personalizado o una paleta. También puede utilizar esta propiedad para formularios en los que la propiedad PresentaciónPredeterminada (DefaultView) tiene el valor Formulario simple.

El selector de registro muestra un indicador de registro sin salvar  [image]  cuando se está editando un registro. Cuando se establece No en la propiedad SelectoresDeRegistro (RecordSelectors) y Registro editado en la propiedad BloqueosDelRegistro (RecordLocks) (el bloqueo de registros es "pesimista", sólo una persona al mismo tiempo puede editar el registro), no hay pistas visuales que indiquen que el registro está bloqueado.


Propiedad BarrasDeDesplazamiento (ScrollBars)

Puede usar la propiedad BarrasDeDesplazamiento (ScrollBars) para especificar si aparecen o no barras de desplazamiento en un formulario o en un control de cuadro de texto.

Valores

Los valores de la propiedad BarrasDeDesplazamiento (ScrollBars) son:

Valor	Descripción	Visual Basic
Ninguno (formularios) Ninguno (cuadros de texto)	(Predeterminado para cuadros de texto) No aparecen barras de desplazamiento en el formulario o cuadro de texto.	0
Sólo horizontal (formularios)	Aparece una barra de desplazamiento horizontal en el formulario. No se aplica a cuadros de texto.	1
Sólo vertical (formularios) Vertical (cuadros de texto)	Aparece una barra de desplazamiento vertical en el formulario o cuadro de texto.	2
Ambas (formularios)	(Predeterminado para formularios) Aparecen barras de desplazamiento horizontal y vertical en el formulario. No se aplica a cuadros de texto.	3
Puede establecer esta propiedad utilizando la hoja de propiedades del formulario o control, una macro o en Visual Basic.

Para un cuadro de texto, puede establecer el valor predeterminado para esta propiedad usando el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Comentarios

Si el formulario es mayor que la ventana de presentación disponible, puede usar la propiedad BarrasDeDesplazamiento (ScrollBars) para permitir al usuario ver todo el formulario.

Puede usar la propiedad BotonesDeDesplazamiento (NavigationButtons) para controlar el desplazamiento por los registros.


Propiedad TextoDeLaBarraDeEstado (StatusBarText)

Puede usar la propiedad TextoDeLaBarraDeEstado (StatusBarText) para especificar el texto que se muestra en la barra de estado cuando se selecciona un control.

Nota   La propiedad TextoDeLaBarraDeEstado (StatusBarText) sólo se aplica a los controles de un formulario, no a los controles de un informe.

Valores

La propiedad TextoDeLaBarraDeEstado (StatusBarText) se establece utilizando una expresión de cadena de hasta 255 caracteres de longitud.

Puede establecer esta propiedad utilizando la hoja de propiedades del control, una macro o en Visual Basic.

Nota   La longitud del texto que puede presentar en la barra de estado depende del hardware y del tipo de pantalla de su equipo.

Comentarios

Puede usar la propiedad TextoDeLaBarraDeEstado (StatusBarText) para proporcionar información específica acerca de un control. Por ejemplo, cuando un cuadro de texto tiene el enfoque, una instrucción breve puede decir al usuario qué tipo de datos ha de escribir.

Nota   También puede utilizar la propiedad TextoDeAyudaDelControl (ControlTipText) para mostrar una sugerencia en la pantalla para un control.

Si crea un control arrastrando un campo desde la lista de campos, el valor que hay en la propiedad Descripción del campo se copia a la propiedad TextoDeLaBarraDeEstado (StatusBarText).

Para un control que contiene un hipervínculo, la barra de estado muestra la dirección del hipervínculo cuando el puntero del mouse está sobre el control si la casilla de verificación Mostrar direcciones de hipervínculos en la barra de estado está activada. Esta casilla de verificación está en la ficha Hipervínculos/HTML del cuadro de diálogo Opciones, disponible al hacer clic en Opciones en el menú Herramientas. Cuando esté editando el control, la barra de estado mostrará el texto que está establecido en la propiedad TextoDeLaBarraDeEstado (StatusBarText).


Propiedad PermitirAgregar (AllowAdditions)

La propiedad PermitirAgregar (AllowAdditions) se utiliza para especificar si un usuario puede agregar un registro cuando esté usando un formulario.

Valores

La propiedad PermitirAgregar (AllowAdditions) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) El usuario puede agregar nuevos registros.	True (–1)
No	El usuario no puede agregar nuevos registros.	False (0)
La propiedad PermitirAgregar (AllowAdditions) se puede establecer usando la hoja de propiedades del formulario, una macro o Visual Basic.

Observaciones

Establezca la propiedad PermitirAgregar (AllowAdditions) a No para permitir que los usuarios vean o modifiquen los registros existentes, aunque no puedan agregar registros.

Si desea evitar que se cambien los registros existentes (hacer que un formulario sea de sólo lectura), establezca las propiedades PermitirAgregar (AllowAdditions), PermitirEliminación (AllowDeletions) y PermitirEdiciones (AllowEdits) a No. También puede hacer los registros de sólo lectura estableciendo la propiedad TipoRecordset (RecordsetType) a Snapshot.

Si sólo desea abrir un formulario para introducir datos, establezca la propiedad EntradaDeDatos (DataEntry) del formulario a Sí.

Cuando la propiedad PermitirAgregar (AllowAdditions) está establecida a No, el comando Entrada de datos del menú Registros no está disponible.

Nota   Cuando se utiliza el argumento Modo de datos de la acción AbrirFormulario, Microsoft Access anulará un número determinado de valores de propiedades del formulario. Si el argumento Modo de datos de la acción AbrirFormulario está establecido a Edición, Microsoft Access abrirá el formulario con los siguientes valores de las propiedades:

•	PermitirEdiciones (AllowEdits) — Sí

•	PermitirEliminación (AllowDeletions) — Sí

•	PermitirAgregar (AllowAdditions) — Sí

•	EntradaDeDatos (DataEntry) — No

Para evitar que la acción AbrirFormulario anule alguno de estos valores de propiedad existentes, omita el valor del argumento Modo de datos, de tal forma que Microsoft Access use los valores de las propiedades definidos por el formulario.


Propiedad PermitirAutocorrección (AllowAutoCorrect)

La propiedad PermitirAutocorrección (AllowAutoCorrect) se utiliza para especificar si un control de cuadro de texto o de cuadro combinado corregirá automáticamente las entradas hechas por el usuario.

Valores

La propiedad PermitirAutocorrección (AllowAutoCorrect) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) Las entradas son corregidas automáticamente de acuerdo con los valores en el cuadro de diálogo Autocorrección.	True (–1)
No	Las entradas no son corregidas.	False (0)
La propiedad PermitirAutocorrección (AllowAutoCorrect) se puede establecer usando una hoja de propiedades de un control, una macro, o Visual Basic. Puede establecer el valor predeterminado para esta propiedad usando el estilo de control predeterminado de un control o el método DefaultControl en Visual Basic.

Observaciones

El cuadro de diálogo Autocorrección está disponible haciendo clic en Autocorrección en el menú Herramientas.


Propiedad PermitirEliminación (AllowDeletions)

La propiedad PermitirEliminación (AllowDeletions) se utiliza para especificar si un usuario puede eliminar un registro cuando esté usando un formulario.

Valores

La propiedad PermitirEliminación (AllowDeletions) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) El usuario puede eliminar registros.	True (–1)
No	El usuario no puede eliminar registros.	False (0)
La propiedad PermitirEliminación (AllowDeletions) se puede establecer usando la hoja de propiedades del formulario, una macro, o Visual Basic.

Observaciones

Puede establecer esta propiedad a No para permitir que los usuarios vean y modifiquen los registros existentes, pero no los eliminen. Cuando PermitirEliminación (AllowDeletions) se establece a Sí, los registros pueden ser eliminados siempre que no se rompan las reglas de integridad referencial.

Si desea evitar cambios a los registros existentes (hacer un formulario de sólo lectura), establezca las propiedades PermitirAgregar (AllowAdditions), PermitirEliminación (AllowDeletions) y PermitirEdiciones (AllowEdits) a No. También puede hacer los registros de sólo lectura estableciendo la propiedad TipoRecordset (RecordsetType) a Snapshot.

Cuando la propiedad PermitirEliminación (AllowDeletions) está establecida a No, no está disponible el comando Eliminar registro del menú Edición.

Nota   Cuando el argumento Modo de datos de la acción AbrirFormulario está establecido, Microsoft Access anulará un determinado número de valores de propiedades del formulario. Si el argumento Modo de datos de la acción AbrirFormulario está establecido a Editar, Microsoft Access abrirá el formulario con los siguientes valores de la propiedad:

•	PermitirEdiciones (AllowEdits) — Sí

•	PermitirEliminación (AllowDeletions) — Sí

•	PermitirAgregar (AllowAdditions) — Sí

•	EntradaDeDatos (DataEntry) — No

Para evitar que la acción AbrirFormulario anule alguno de estos valores de propiedad existentes, omita el valor del argumento Modo de datos, de tal forma que Microsoft Access use los valores de las propiedades definidos por el formulario.


Propiedad PermitirEdiciones (AllowEdits)

La propiedad PermitirEdiciones (AllowEdits) se utiliza para especificar si un usuario puede modificar los registros guardados cuando use un formulario.

Valores

La PermitirEdiciones (AllowEdits) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) El usuario puede modificar los registros guardados.	True (–1)
No	El usuario no puede modificar los registros guardados.	False (0)
La propiedad PermitirEdiciones (AllowEdits) se puede establecer usando la hoja de propiedades del formulario, una macro o Visual Basic.

Observaciones

Puede usar la propiedad PermitirEdiciones (AllowEdits) para evitar cambios a los datos mostrados en un formulario. Si dese impedir que se realicen cambios a los datos de un control determinado, use la propiedad Activado (Enabled) o Bloqueado (Locked).

Si desea evitar que se produzcan cambios en los registros existentes (hacer un formulario de sólo lectura), establezca las propiedades PermitirAgregar (AllowAdditions), PermitirEliminación (AllowDeletions) y PermitirEdiciones (AllowEdits) a No. También puede hacer los registros de sólo lectura estableciendo la propiedad TipoRecordset (RecordsetType) a Snapshot.

Cuando la propiedad PermitirEdiciones (AllowEdits) está establecida a No, no están disponibles ni el comando Eliminar registro del menú Edición, ni el comando Entrada de datos del menú Registros.

Nota   Cuando está establecido el argumento Modo de datos de la acción AbrirFormulario, Microsoft Access anulará un determinado número de valores de propiedades del formulario. Si el argumento Modo de datos de la acción AbrirFormulario está establecido a Editar, Microsoft Access abrirá el formulario con los siguientes valores de la propiedad:

•	PermitirEdiciones (AllowEdits) — Sí

•	PermitirEliminación (AllowDeletions) — Sí

•	PermitirAgregar (AllowAdditions) — Sí

•	EntradaDeDatos (DataEntry) — No

Para evitar que la acción AbrirFormulario anule alguno de estos valores de propiedad existentes, omita el valor del argumento Modo de datos, de tal forma que Microsoft Access use los valores de las propiedades definidos por el formulario.


Propiedad BotónCerrar (CloseButton)

La propiedad BotónCerrar (CloseButton) se utiliza para especificar si está activado el botón Cerrar  [image]  de un formulario.

Valores

La propiedad BotónCerrar (CloseButton) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) El botón Cerrar está activado.	True (–1)
No	El botón Cerrar está desactivado y el comando Cerrar no está disponible en el menú Control.	False (0)
La propiedad BotónCerrar (CloseButton) se puede establecer usando la hoja de propiedades del formulario, una macro o Visual Basic.

La propiedad BotónCerrar (CloseButton) sólo se puede establecer en la vista Diseño del formulario.

Observaciones

Si establece la propiedad BotónCerrar (CloseButton) a No, el botón Cerrar permanece visible pero aparece apagado (en gris), con lo que de ofrecer alguna otra forma de cerrar el formulario: por ejemplo, un botón de comando o comando de menú personalizado que ejecuta una macro o procedimiento de evento que cierra el formulario.

Sugerencia   También puede cerrar el formulario presionando ALT+F4.


Propiedad ControlType

La propiedad ControlType se utiliza en Visual Basic para determinar el tipo de control de un formulario o informe.

Valores

El valor de la propiedad ControlType es una constante intrínseca que especifica el tipo de control.

Constante	Control
acLabel	Etiqueta
acRectangle	Rectángulo
acLine	Línea
acImage	Imagen
acCommandButton	Botón de comando
acOptionButton	Botón de opción
acCheckBox	Casilla de verificación
acOptionGroup	Grupo de opciones
acBoundObjectFrame	Marco de objeto dependiente
acTextBox	Cuadro de texto
acListBox	Cuadro de lista
acComboBox	Cuadro combinado
acSubform	Subformulario/subinforme
acObjectFrame	Marco de objeto independiente o gráfico
acPageBreak	Salto de página
acPage	Página (Page)
acCustomControl	Control ActiveX (personalizado)
acToggleButton	Botón de alternar
acTabCtl	Ficha
La propiedad ControlType sólo se puede establecer usando Visual Basic en la vista Diseño del formulario o en la vista Diseño del informe, aunque puede ser leída en todas las vistas.

Observaciones

La propiedad ControlType no es solamente útil para comprobar un tipo de control del código, sino que también para cambiar el tipo de control a otro tipo. Por ejemplo, puede cambiar un cuadro de texto a un cuadro combinado estableciendo la propiedad ControlType del cuadro de texto a acComboBox mientras se encuentra en la vista Diseño de formulario.

La propiedad ControlType se puede usar para cambiar las características de controles similares de un formulario, de acuerdo con ciertas condiciones. Por ejemplo, si no desea que los usuarios modifiquen los datos existentes en los cuadros de texto, puede establecer la propiedad EfectoEspecial (SpecialEffect) de todos los cuadros de texto a Sin relieve y establecer la propiedad PermitirEdiciones (AllowEdits) del formulario a No. (La propiedad EfectoEspecial (SpecialEffect) no afecta al hecho de que los datos puedan ser modificados o no; se utiliza aquí para ofrecer una señal visual de que el comportamiento del control ha cambiado).

La propiedad ControlType se utiliza también para especificar el tipo de control a crear cuando esté usando la función CreateControl.


Ejemplo de las propiedades ControlType, PermitirAgregar (AllowAdditions), PermitirEliminación (AllowDeletions) y PermitirEdición (AllowEdits)
Ejemplo de las propiedades ControlType, PermitirAgregar (AllowAdditions), PermitirEliminación (AllowDeletions) y PermitirEdiciones (AllowEdits)

El siguiente ejemplo examina la propiedad ControlType para todos los controles de un formulario. Por cada control de etiqueta y de cuadro de texto, el procedimiento alterna la propiedad EfectoEspecial (SpecialEffect) para esos controles. Cuando la propiedad EfectoEspecial (SpecialEffect) del control etiqueta está establecida a Sombreado y la propiedad EfectoEspecial (SpecialEffect) del control de cuadro de texto está establecida a Normal y las propiedades PermitirAgregar (AllowAdditions), PermitirEliminación (AllowDeletions), y PermitirEdiciones (AllowEdits) están todas establecidas a True, se alterna la variable entCanEdit para permitir la modificación de los datos bases.

Sub ToggleControl(frm As Form)

Dim ctl As Control

Dim entI As Integer, entCanEdit As Integer

Const conTransparent = 0

Const conWhite = 16777215

For Each ctl in frm.Controls

With ctl

Select Case .ControlType

Case acLabel

If .SpecialEffect = acEffectShadow Then

.SpecialEffect = acEffectNormal

.BorderStyle = conTransparent

entCanEdit = True

Else

.SpecialEffect = acEffectShadow

entCanEdit = False

End If

Case acTextBox

If .SpecialEffect = acEffectNormal Then

.SpecialEffect = acEffectSunken

.BackColor = conWhite

Else

.SpecialEffect = acEffectNormal

.BackColor = frm.Detail.BackColor

End If

End Select

End With

Next ctl

If entCanEdit = False Then

With frm

.AllowAdditions = False

.AllowDeletions = False

.AllowEdits = False

End With

Else

With frm

.AllowAdditions = True

.AllowDeletions = True

.AllowEdits = True

End With

End If

End Sub


Propiedad EntradaDeDatos (DataEntry)

La propiedad EntradaDeDatos (DataEntry) se utiliza para especificar si se abre un formulario dependiente para permitir sólo la entrada de datos. La propiedad EntradaDeDatos (DataEntry) no determina si los registros pueden agregarse o no; sólo determina si se muestran los registros existentes.

Valores

La propiedad EntradaDeDatos (DataEntry) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	El formulario se abre mostrando sólo un registro en blanco.	True (–1)
No	(Predeterminado) El formulario se abre mostrando los registros existentes.	False (0)
La propiedad EntradaDeDatos (DataEntry) se puede establecer usando la hoja de propiedades de un formulario, una macro o Visual Basic.

Esta propiedad se puede establecer en cualquier vista.

Observaciones

La propiedad EntradaDeDatos (DataEntry) sólo tiene efecto cuando la propiedad PermitirAgregar (AllowAdditions) está establecida a Sí.

Establecer la propiedad EntradaDeDatos (DataEntry) a Sí usando Visual Basic tiene el mismo efecto que hacer clic en Entrada de datos en el menú Registros. Establecerla a No usando Visual Basic es equivalente a hacer clic en Quitar filtro u ordenar en el menú Registros.

Nota   Cuando se establece el argumento Modo de datos de la acción AbrirFormulario, Microsoft Access anula un número determinado de valores de propiedades del formulario. Si el argumento Modo de datos de la acción AbrirFormulario está establecido a Editar, Microsoft Access abrirá el formulario con los siguientes valores de las propiedades:

•	PermitirEdiciones (AllowEdits) — Sí

•	PermitirEliminación (AllowDeletions) — Sí

•	PermitirAgregar (AllowAdditions) — Sí

•	EntradaDeDatos (DataEntry) — No

Para evitar que la acción AbrirFormulario anule alguno de estos valores de propiedad existentes, omita el valor del argumento Modo de datos, de tal forma que Microsoft Access use los valores de las propiedades definidos por el formulario.


Propiedad SelecciónMúltiple (MultiSelect)

La propiedad SelecciónMúltiple (MultiSelect) se utiliza para especificar si un usuario puede o no hacer múltiples selecciones en un cuadro de lista de un formulario y cómo pueden hacerse las selecciones múltiples.

Valores

La propiedad SelecciónMúltiple (MultiSelect) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Ninguno	(Predeterminado) No se permiten las selecciones múltiples.	0
Simple	Los elementos múltiples se seleccionan o deseleccionan eligiéndolos con el mouse o presionando la BARRA ESPACIADORA.	1
Extendido	Los elementos múltiples se seleccionan manteniendo presionada la tecla MAYÚS y eligiéndolos con el mouse o manteniendo presionada MAYÚS y presionando una tecla de dirección para extender la selección desde el elemento seleccionado previamente al elemento actual. También puede seleccionar elementos arrastrando el mouse. Manteniendo presionada CTRL y haciendo clic en un elemento, selecciona o deselecciona ese elemento.	2
La propiedad SelecciónMúltiple (MultiSelect) se puede establecer usando la hoja de propiedades del cuadro de lista, una macro o Visual Basic.

Esta propiedad sólo puede establecerse en la vista Diseño del formulario.

Observaciones

Puede usar la propiedad ListIndex para devolver el número de índice del elemento seleccionado. Cuando la propiedad SelecciónMúltiple (MultiSelect) se establece a Extendido o Simple, puede usar la propiedad Selected del cuadro de lista o la colección ItemsSelected para determinar los elementos que están seleccionados. Cuando haya múltiples selecciones en un cuadro de lista, el valor del control del cuadro de lista será siempre Nulo.

Si la propiedad SelecciónMúltiple (MultiSelect) está establecida a Extendida, si se vuelve a consultar el cuadro de lista se borran todas las selecciones hechas por el usuario.


Propiedad SeparadoresDeRegistros (DividingLines)

La propiedad SeparadoresDeRegistros (DividingLines) se utiliza para especificar si habrá separadores de registros separando las secciones de un formulario o los registros mostrados en un formulario continuo.

Valores

La propiedad SeparadoresDeRegistros (DividingLines) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) Los separadores de registros separarán las secciones y los registros de los formularios continuos.	True (–1)
No	No hay separadores de registros.	False (0)
La propiedad SeparadoresDeRegistros (DividingLines) se puede establecer usando la hoja de propiedades del formulario, una macro o Visual Basic.

Esta propiedad se puede establecer en cualquier vista.


Propiedad Selected

La propiedad Selected se utiliza en Visual Basic para determinar si está seleccionado un elemento de un cuadro de lista.

Valores

La propiedad Selected es una matriz basada en ceros que contiene el estado seleccionado de cada elemento de un cuadro de lista.

Valor	Descripción
True (–1)	El elemento del cuadro de lista está seleccionado.
False (0)	El elemento del cuadro de lista no está seleccionado.
Puede obtener o establecer la propiedad Selected usando Visual Basic.

Esta propiedad sólo está disponible en tiempo de ejecución.

Observaciones

Cuando la propiedad SelecciónMúltiple (MultiSelect) de un control de cuadro de lista está establecida a Ninguno, sólo un elemento puede tener su propiedad Selected establecida a True. Cuando la propiedad SelecciónMúltiple (MultiSelect) de un control de cuadro de lista está establecida a Simple o Extendida, cualquiera o todos los elementos pueden tener su propiedad Selected establecida a True. Un cuadro de lista de selección múltiple dependiente de un campo tendrá siempre una propiedad Valor (Value) igual a Nulo. La propiedad Selected o la colección ItemsSelected se utilizan para recuperar información acerca de qué elementos están seleccionados.

Puede usar la propiedad Selected para seleccionar los elementos de un cuadro de lista usando Visual Basic. Por ejemplo, la siguiente expresión selecciona el quinto elemento de la lista:

Me!Listbox.Selected(4) = True


Ejemplo de la propiedad Selected

El siguiente ejemplo usa la propiedad Selected para mover los elementos seleccionados del cuadro de lista lstOrigen al cuadro de lista lstDestino. La propiedad TipoDeOrigenDeLaFila (RowSourceType) del cuadro de lista lstDestino está establecida a Lista de valores y la propiedad OrigenDeLaFila (RowSource) del control se ha construido desde todos los elementos seleccionados en el control lstOrigen. La propiedad SelecciónMúltiple (MultiSelect) del cuadro de lista lstOrigen está establecida a Extendida. La función CopySelected( ) es llamada desde el botón de comando cmdCopyItem.

Sub cmdCopyItem_Click()

CopySelected Me

End Sub

Function CopySelected(frm As Form) As Integer

Dim ctlSource As Control

Dim ctlDest As Control

Dim cadItems As String

Dim entCurrentRow As Integer

Set ctlSource = frm!lstOrigen

Set ctlDest = frm!lstDestino

For entCurrentRow = 0 To ctlSource.Listcount - 1

If ctlSource.Selected(entCurrentRow) Then

cadItems = cadItems & ctlSource.Column(0, entCurrentRow) & ";"

End If

Next entCurrentRow

' Restablecer propiedad OrigenDeLaFila del control

' de destino.

ctlDest.RowSource = ""

ctlDest.RowSource = cadItems

End Function


Propiedad TripleEstado (TripleState)

La propiedad TripleEstado (TripleState) se puede utilizar para especificar cómo mostrarán los valores Null una casilla de verificación, un botón de alternar o un botón de opción.

Nota   La propiedad TripleEstado (TripleState) no se aplica a los controles especificados cuando se utilizan dentro de un control de grupo de opciones.

Valores

La propiedad TripleEstado (TripleState) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	El control rotará a través de los estados en busca de valores Sí, No y Null. El control aparece apagado (en gris) cuando su propiedad Valor (Value) está establecida a Null.	True (–1)
No	(Predeterminado) El control rotará a través de los estados en busca de valores Sí y No. Los valores Null se muestran como los valores No.	False (0)
La propiedad TripleEstado (TripleState) se puede establecer usando la hoja de propiedades de un control, una macro o Visual Basic.

Esta propiedad puede ser establecida en cualquier vista.


Propiedades PosiciónX, PosiciónY (CurrentX, CurrentY)
Propiedades PosiciónX y PosiciónY (CurrentX, CurrentY)

Las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY) se pueden utilizar para especificar las coordenadas horizontales y verticales para la posición inicial del siguiente método de impresión y dibujo en un informe. Por ejemplo, se pueden utilizar estas propiedades para determinar si se va a dibujar el punto central de un círculo en una sección de un informe.

Valores

•	La propiedad PosiciónX (CurrentX) especifica un valor de tipo Simple que se utiliza en una expresión numérica para establecer la coordenada horizontal del siguiente método de impresión o dibujo.

•	La propiedad PosiciónY (CurrentY) especifica un valor de tipo Simple que se utiliza en una expresión numérica para establecer la coordenada vertical del siguiente método de impresión o dibujo.

Las coordenadas se miden desde la esquina superior izquierda de la sección del informe que contiene la referencia a la propiedad PosiciónX (CurrentX) o PosiciónY (CurrentY). El valor de la propiedad PosiciónX (CurrentX) es 0 en el límite izquierdo de la sección y el valor de la propiedad PosiciónY (CurrentY) es 0 en su límite superior.

Las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY) se pueden establecer utilizando una macro o un procedimiento de evento de Visual Basic especificado por el valor de la propiedad AlImprimir (OnPrint) de una sección del informe.

Comentarios

Utilice la propiedad ModoDeLaEscala (ScaleMode) para definir la unidad de medida, como puntos, píxels, caracteres, pulgadas, milímetros o centímetros, en las que se van a basar las coordenadas.

Cuando se utilizan los métodos gráficos siguientes, los valores de las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY) cambian en la forma indicada.

Método	Establece las propiedades PosiciónX (CurrentX), PosiciónY (CurrentY) a
Circle	Centro del objeto.
Line	Punto de fin de la línea (las coordenadas x2, y2).
Print	Siguiente posición de impresión.


Propiedad ModoDeDibujo (DrawMode)

La propiedad ModoDeDibujo (DrawMode) se puede utilizar para especificar cómo interactúa la pluma (el color que se utiliza para dibujar) con los colores existentes del fondo de un informe cuando se utiliza el método Line, Circle o PSet para dibujar en un informe al imprimir.

Valores

La propiedad ModoDeDibujo (DrawMode) tiene los valores siguientes.

Valor	Descripción
1	Color de pluma negro.
2	Lo inverso al valor 15 (NotMergePen).
3	Combinación de los colores comunes al color del fondo y al inverso de la pluma (MaskNotPen).
4	Lo inverso del valor 13 (NotCopyPen).
5	Combinación de los colores comunes a la pluma y al inverso de la pantalla (MaskPenNot).
6	Lo inverso del color de pantalla (Invert).
7	Combinación de los colores de la pluma y del color de la pantalla, pero que no están en ambos (XorPen).
8	Lo inverso del valor 9 (NotMaskPen).
9	Combinación de los colores comunes a la pluma y a la pantalla (MaskPen).
10	Lo inverso del valor 7 (NotXorPen).
11	Ninguna operación: la impresión permanece sin cambio. De hecho, este valor desactiva el dibujo (Nop).
12	Combinación del color de la pantalla y el color inverso de la pluma  (MergeNotPen).
13	(Predeterminado) Color especificado por la propiedad ColorDelTexto (ForeColor) (CopyPen).
14	Combinación del color de la pluma y el color inverso de la pantalla (MergePenNot).
15	Combinación del color de la pluma y el color de la pantalla (MergePen).
16	Color de pluma blanco.
El valor de la propiedad DrawMode es un valor de tipo Entero.

Se puede establecer la propiedad DrawMode utilizando una macro o un procedimiento de evento de Visual Basic especificado por el valor de la propiedad AlImprimir (OnPrint) de una sección.

Comentarios

Utilice esta propiedad para producir efectos visuales especiales cuando haga dibujos en un informe. Microsoft Access compara cada píxel del patrón del dibujo con el píxel correspondiente del fondo existente para determinar cómo va a aparecer el dibujo en el informe. Por ejemplo, el valor 7 utiliza el operador Xor para combinar un píxel de patrón del dibujo con un píxel del fondo.


Propiedad EstiloDeDibujo (DrawStyle)

La propiedad EstiloDeDibujo (DrawStyle) se puede utilizar para especificar el estilo de línea cuando se utilizan los métodos Line y Circle para imprimir líneas en informes.

Valores

La propiedad EstiloDeDibujo (DrawStyle) tiene los valores siguientes.

Valor	Descripción
0	(Predeterminado) Línea sólida, interior transparente
1	Guión, interior transparente
2	Punto, interior transparente
3	Guión-punto, interior transparente
4	Guión-punto-punto, interior transparente
5	Línea invisible, interior transparente
6	Línea invisible, interior sólido
El valor de la propiedad EstiloDeDibujo (DrawStyle) tiene un valor de tipo Entero.

Esta propiedad se puede establecer utilizando una macro o un procedimiento de evento de Visual Basic especificado por un valor de la propiedad AlImprimir (OnPrint) de una sección.

Comentarios

La propiedad EstiloDeDibujo (DrawStyle) produce los resultados descritos en la tabla siguiente si la propiedad AnchoDeDibujo (DrawWidth) está establecida a 1. Si el valor de la propiedad AnchoDeDibujo (DrawWidth) es mayor que 3, los valores de la propiedad EstiloDeDibujo (DrawStyle) 1 a 4 producirán una línea sólida (no se modifica el valor de la propiedad EstiloDeDibujo (DrawStyle)).


Propiedad AnchoDeDibujo (DrawWidth)

La propiedad AnchoDeDibujo (DrawWidth) se puede utilizar para especificar el ancho de línea para que los métodos Line, Circle y PSet impriman líneas en los informes.

Valores

La propiedad AnchoDeDibujo (DrawWidth) se puede establecer a un valor de tipo Entero entre 1 y 32.767. Este valor representa el ancho de la línea en píxels. El valor predeterminado es 1 o ancho de píxel 1.

Se puede establecer esta propiedad utilizando una macro o un procedimiento de evento de Visual Basic especificado por el valor de la propiedad AlImprimir (OnPrint) de una sección.

Comentarios

Aumente el valor de esta propiedad para aumentar el ancho de la línea. Si el valor de la propiedad AnchoDeDibujo (DrawWidth) es mayor que 3, los valores de la propiedad EstiloDeDibujo (DrawStyle) 1 a 4 producen una línea sólida (no se modifica el valor de la propiedad EstiloDeDibujo (DrawStyle)). Establecer la propiedad AnchoDeDibujo (DrawWidth) a 1 activa la propiedad EstiloDeDibujo (DrawStyle) para producir los resultados mostrados en la tabla de valores de la propiedad EstiloDeDibujo (DrawStyle).


Propiedad EstiloDeRelleno (FillStyle)

La propiedad EstiloDeRelleno (FillStyle) se puede utilizar para especificar si una línea o círculo dibujado con el método Circle o Line, es transparente, opaco o relleno con un patrón.

Valores

La propiedad EstiloDeRelleno (FillStyle)puede tener los valores siguientes.

Valor	Descripción
0	Opaco
1	(Predeterminado) Transparente
2	Línea horizontal
3	Línea vertical
4	Diagonal hacia arriba
5	Diagonal hacia abajo
6	Cruz
7	Cruz en diagonal
Se puede establecer la propiedad EstiloDeRelleno (FillStyle) utilizando una macro o un procedimiento de evento de Visual Basic especificado por un valor de la propiedad AlImprimir (OnPrint) de una sección.

Comentarios

Cuando la propiedad EstiloDeRelleno (FillStyle) está establecida a 0, un círculo o línea tiene el color establecido por la propiedad ColorDeRelleno (FillColor). Cuando la propiedad EstiloDeRelleno (FillStyle) está establecida a 1, el interior del círculo o línea es transparente y tiene el color del informe que está detrás.

Para utilizar la propiedad EstiloDeRelleno (FillStyle), la propiedad EfectoEspecial (SpecialEffect) tiene que estar establecida a Normal.


Propiedades AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth)

Las propiedades AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth) se pueden utilizar para especificar el número de unidades para la medida vertical u horizontal de la página cuando se utilizan los métodos Circle, Line, PSet o Print mientras se imprime o efectúa la vista preliminar de un informe o su resultado se guarda en un archivo.

Valores

•	La propiedad AltoDeLaEscala (ScaleHeight) especifica un valor de tipo Simple que se utiliza en una expresión numérica para establecer el número de unidades de la medida vertical de la página.

•	La propiedad AnchoDeLaEscala (ScaleWidth) especifica un valor de tipo Simple que se utiliza en una expresión numérica para establecer el número de unidades de la medida horizontal de la página.

Los valores predeterminados son el ancho y alto de una página del informe en twips.

Las propiedades AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth) se pueden establecer utilizando una macro o un procedimiento de evento de Visual Basic especificado por un valor de la propiedad AlImprimir (OnPrint) de una sección.

Comentarios

Se pueden utilizar las propiedades AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth) para crear una escala de coordenadas personalizada para dibujar o imprimir. Por ejemplo, la instrucción ScaleHeight = 100 define el alto interno de la sección como 100 unidades, es decir, define una unidad vertical como una centésima parte del alto.

Utilice la propiedad ModoDeLaEscala (ScaleMode) para definir una escala basada en una unidad de medida estándar, como puntos, píxels, caracteres, pulgadas, milímetros o centímetros.

Establecer las propiedades AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth) a valores positivos hace que las coordenadas aumenten de valor de arriba a abajo y de izquierda a derecha. Establecerlas a valores negativos hace que las coordenadas aumenten de valor de abajo a arriba y de derecha a izquierda.

Utilizando estas propiedades y las propiedades relacionadas IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop), se puede configurar un sistema de coordenadas personalizas con coordenadas positivas y negativas. Estas cuatro propiedades de escala interactúan con la propiedad ModoDeLaEscala (ScaleMode) de la forma siguiente:

•	Al establecer cualquier otra propiedad de escala a cualquier valor se establece automáticamente la propiedad ModoDeLaEscala (ScaleMode) a 0.

•	Al establecer la propiedad ModoDeLaEscala (ScaleMode) a un número mayor que 0 se cambian las propiedades AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth) a la nueva unidad de medida y se establecen las propiedades IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) a 0. Además, los valores de las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY) cambian para reflejar las nuevas coordenadas del punto actual.

También se puede utilizar el método Scale para establecer las propiedades AltoDeLaEscala (ScaleHeight), AnchoDeLaEscala (ScaleWidth), IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) en una instrucción.

Nota   Las propiedades AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth) no son iguales que las propiedades Altura (Height) y Anchura (Width).


Propiedades IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop)

Las propiedades IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) se pueden utilizar para especificar las unidades para las coordenadas horizontal y vertical que describen la ubicación de los bordes izquierdo y superior de una página cuando se utiliza el método Circle, Line, PSet o Print mientras se efectúa la vista preliminar, se imprime un informe o su resultado se guarda en un archivo.

Valores

•	La propiedad IzquierdaDeLaEscala (ScaleLeft) especifica un valor de tipo Simple que se utiliza en una expresión numérica para establecer el número unidades de la coordenada horizontal del límite izquierdo de una página. El valor predeterminado es 0.

•	La propiedad SuperiorDeLaEscala (ScaleTop) especifica un valor de tipo Simple que se utiliza en una expresión numérica para establecer el número unidades de la coordenada vertical del límite superior de una página. El valor predeterminado es 0.

Se pueden establecer las propiedades IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) utilizando una macro o un procedimiento de evento de Visual Basic especificado por un valor de la propiedad AlImprimir (OnPrint) de una sección.

Comentarios

Utilizando estas propiedades y las propiedades relacionadas AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth), se puede configurar un sistema de coordenadas personalizado con coordenadas positivas y negativas. Estas cuatro propiedades de escala interactúan con la propiedad ModoDeLaEscala (ScaleMode) de la forma siguiente:

•	Establecer cualquier otra propiedad de escala a cualquier valor establece automáticamente la propiedad ModoDeLaEscala (ScaleMode) a 0.

•	Al establecer la propiedad ModoDeLaEscala (ScaleMode) a un número mayor que 0 se cambian los valores de las propiedades AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth) a la nueva unidad de medida y se establecen las propiedades IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) a 0. Además, los valores de las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY) cambian para reflejar las nuevas coordenadas del punto actual.

También se puede utilizar el método Scale para establecer las propiedades AltoDeLaEscala (ScaleHeight), AnchoDeLaEscala (ScaleWidth), IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) en una instrucción.

Nota   Las propiedades IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) no son iguales que las propiedades Izquierda (Left) y Superior (Top).


Propiedad ModoDeLaEscala (ScaleMode)

La propiedad ModoDeLaEscala (ScaleMode) se puede utilizar en Visual Basic para especificar la unidad de medida de las coordenadas de una página cuando se utiliza el método Circle, Line, PSet o Print mientras se efectúa la vista preliminar o se imprime un informe o su resultado se guarda en un archivo.

Valores

La propiedad ScaleMode puede tener los valores siguientes.

Valor	Descripción
0	Valores personalizados utilizados por una o más de las propiedades AltoDeLaEscala (ScaleHeight), AnchoDeLaEscala (ScaleWidth), IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop)
1	(Predeterminado) Twips
2	Puntos
3	Píxels
4	Caracteres (horizontal = 120 twips por unidad; vertical = 240 twips por unidad)
5	Pulgadas
6	Milímetros
7	Centímetros
La configuración de esta propiedad tiene un valor de tipo Entero.

Se puede establecer la propiedad ModoDeLaEscala (ScaleMode) utilizando una macro o un procedimiento de evento de Visual Basic especificado por un valor de la propiedad AlImprimir (OnPrint) de una sección.

Comentarios

Utilizando las propiedades relacionadas AltoDeLaEscala (ScaleHeight), AnchoDeLaEscala (ScaleWidth), IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) se puede crear un sistema de coordenadas personalizado con coordenadas positivas y negativas. Las cuatro propiedades interactúan con la propiedad ModoDeLaEscala (ScaleMode) de la forma siguiente:

•	Establecer cualquier otra propiedad de escala a cualquier valor establece automáticamente la propiedad ModoDeLaEscala (ScaleMode)a 0.

•	Establecer la propiedad ModoDeLaEscala (ScaleMode)a un número mayor que 0 cambia los valores de las propiedades relacionadas AltoDeLaEscala (ScaleHeight) y AnchoDeLaEscala (ScaleWidth) a la nueva unidad de medida y establece las propiedades IzquierdaDeLaEscala (ScaleLeft) y SuperiorDeLaEscala (ScaleTop) a 0. Además, los valores de las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY) cambian para reflejar las nuevas coordenadas del punto actual.


Propiedad AgrupaciónDeFechas (DateGrouping)

La propiedad AgrupaciónDeFechas (DateGrouping) se puede utilizar para especificar cómo se desea agrupar fechas en un informe. Por ejemplo, utilizar el valor Predeterminado para EE.UU. hará que la semana empiece en domingo. Si se establece la propiedad AgruparEn (GroupOn) de un campo Fecha/Hora a Semana, el informe agrupará las fechas desde el domingo al sábado.

Nota   El valor de la propiedad AgrupaciónDeFechas (DateGrouping) se aplica a todo el informe, no a un grupo particular del informe.

Valores

La propiedad AgrupaciónDeFechas (DateGrouping) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Predeterminado para EE.UU.	Microsoft Access utiliza los valores de EE.UU. para el primer día de la semana (domingo) y la primera semana del año (comienza el 1 de Enero).	0
Usar opciones del sistema	(Predeterminado) Microsoft Access utiliza los valores basados en los seleccionados localmente en el cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows.	1
Esta propiedad se puede establecer utilizando la hoja de propiedades del informe, una macro o Visual Basic.

Sólo se puede establecer la propiedad AgrupaciónDeFechas (DateGrouping) en la vista Diseño del informe o en el procedimiento de evento Open de un informe.

Comentarios

El orden que se utiliza en un informe no se ve afectado por el valor de la propiedad AgrupaciónDeFechas (DateGrouping).


Propiedades Encabezado del grupo, Pie del grupo

La propiedades Encabezado del grupo y Pie del grupo se pueden utilizar para crear un encabezado de grupo o un pie de página de grupo para un campo o expresión seleccionados en un informe. Se pueden utilizar encabezados y pies de página de grupo para etiquetar o resumir datos de un grupo de registros. Por ejemplo, si se establece la propiedad Encabezado del grupo a Sí para el campo Categorías, cada grupo de productos comenzará con este nombre de categoría.

Valores

Las propiedades Encabezado del grupo y Pie del grupo pueden tener los valores siguientes.

Valor	Descripción
Sí	Crea un encabezado o pie de página de grupo.
No	(Predeterminado) No crea un encabezado o pie de página de grupo.
Estas propiedades se establecen en el cuadro Ordenar y agrupar.

Estas propiedades sólo se pueden establecer en la vista Diseño del informe.

Nota   No se puede hacer referencia a estas propiedades ni establecerlas directamente en Visual Basic. Para crear un encabezado o pie de página de grupo para un campo o expresión en Visual Basic, utilice la función CreateGroupLevel.

Comentarios

Para establecer las propiedades de agrupación (AgruparEn (GroupOn), IntervaloDelGrupo (GroupInterval) y MantenerJuntos (KeepTogether)) a valores distintos de los predeterminados, primero hay que establecer la propiedad Encabezado del grupo o Pie del grupo o ambas a Sí para el campo o expresión seleccionados.


Propiedad IntervaloDelGrupo (GroupInterval)

La propiedad IntervaloDelGrupo (GroupInterval) se puede utilizar con la propiedad AgruparEn (GroupOn) para especificar cómo se van a agrupar los registros en un informe. La propiedad IntervaloDelGrupo (GroupInterval) especifica un valor de intervalo por el que se agrupan los registros. Este intervalo difiere dependiendo del tipo de datos y del valor de la propiedad AgruparEn (GroupOn) del campo o expresión por el que se están agrupando. Por ejemplo, se puede establecer la propiedad IntervaloDelGrupo (GroupInterval) a 1 si se desea agrupar registros por el primer carácter de un campo del tipo de datos Texto, como NombreProducto.

Valores

Los valores de la propiedad IntervaloDelGrupo (GroupInterval) son valores de tipo Entero que dependen del tipo de datos del campo y del valor de su propiedad AgruparEn (GroupOn). El valor predeterminado de IntervaloDelGrupo (GroupInterval) es 1.

Esta propiedad se puede establecer utilizando el cuadro Ordenar y agrupar, una macro o Visual Basic.

La propiedad IntervaloDelGrupo (GroupInterval) sólo se puede establecer en la vista Diseño del informe o en el procedimiento de evento Open de un informe.

Comentarios

A continuación tiene algunos ejemplos de los valores de la propiedad IntervaloDelGrupo (GroupInterval) para diferentes tipos de datos de los campos.

Tipo de datos del campo	Valor de AgruparEn (GroupOn)	Valor de IntervaloDelGrupo (GroupInterval)
Todos	Cada valor	(Predeterminado) Establecido a 1.
Texto	Caracteres prefijados	Establecido a 3 para agrupar por los tres primeros caracteres del campo (por ejemplo, Chai, Chartreuse y Chang se agruparían).
Fecha/Hora	Semana	Establecido a 2 para devolver los datos en grupos bisemanales.
Fecha/Hora	Hora	Establecido a 12 para devolver los datos en grupos de medio día.
Para establecer la propiedad IntervaloDelGrupo (GroupInterval) a un valor distinto al predeterminado (1), primero hay que establecer la propiedad EncabezadoDelGrupo o PieDelGrupo o ambas a Sí para el campo o expresión seleccionados.


Propiedad GroupLevel

La propiedad GroupLevel se puede utilizar en Visual Basic para hacer referencia al nivel de grupo por el que se está ordenando o agrupando en un informe.

Valores

El valor de la propiedad GroupLevel es una matriz en la que cada entrada identifica un nivel de grupo. Para hacer referencia a un nivel de grupo, utilice esta sintaxis:

GroupLevel(n)

El número n es el nivel de grupo, que comienza desde 0. El primer campo o expresión por el que se agrupa es el nivel de grupo 0, el segundo es el nivel de grupo 1, etc. Puede haber hasta 10 niveles de grupo (0 a 9).

Los siguientes valores de ejemplo muestran cómo utilizar la propiedad GroupLevel para hacer referencia a un nivel de grupo.

Nivel de grupo	Hace referencia a
GroupLevel(0)	Primer campo o expresión por el que se ordena o agrupa.
GroupLevel(1)	Segundo campo o expresión por el que se ordena o agrupa..
GroupLevel(2)	Tercer campo o expresión por el que se ordena o agrupa.
Esta propiedad sólo se puede utilizar usando Visual Basic para establecer las propiedades Orden (SortOrder), AgruparEn (GroupOn), IntervaloDelGrupo (GroupInterval), MantenerJuntos (KeepTogether) y OrigenDelControl (ControlSource). Estas propiedades se establecen en el procedimiento de evento Open de un informe.

Comentarios

En los informes, se puede ordenar o agrupar por más de un campo o expresión. Cada campo o expresión por el que se ordena o agrupa es un nivel de grupo.

Los campos y expresiones a ordenar y agrupar se especifican utilizando la función CreateGroupLevel.

Si ya está definido un grupo para un informe (la propiedad GroupLevel está establecida a 0), se puede utilizar la propiedad OrigenDelControl (ControlSource) para cambiar el nivel de grupo en el procedimiento de evento Open del informe. Por ejemplo, el código siguiente cambia la propiedad OrigenDelControl (ControlSource) a un valor contenido en el cuadro de texto txtPideDatos del formulario abierto llamado OrdenarFormulario:

Private Sub Report_Open(Cancel As Integer)

Me.GroupLevel(0).OrigenDelControl _

= Forms!OrdenarFormulario!txtPideDatos

End Sub


Ejemplo de las propiedades de agrupación

En el ejemplo siguiente se establecen las propiedades Orden (SortOrder) y de agrupación para el primer nivel de grupo del informe Productos por categoría para crear una lista alfabética de productos.

Private Sub Report_Open(Cancel As Integer)

' Establece la propiedad SortOrder a orden ascendente.

Me.GroupLevel(0).SortOrder = False

' Establece la propiedad AgruparEn.

Me.GroupLevel(0).GroupOn = 1

' Establece la propiedad IntervaloDelGrupo a 1.

Me.GroupLevel(0).GroupInterval = 1

' Establece la propiedad MantenerJuntos a Con el primer detalle.

Me.GroupLevel(0).KeepTogether = 2

End Sub


Propiedad AgruparEn (GroupOn)

Se puede utilizar la propiedad AgruparEn (GroupOn) en un informe para especificar cómo agrupar datos en un campo o expresión por el tipo de datos. Por ejemplo, esta propiedad permite agrupar un campo Fecha por meses.

Valores

Los valores de la propiedad AgruparEn (GroupOn) disponibles para un campo dependen de su tipo de datos, como muestra la tabla siguiente. Para una expresión, están disponibles todos los valores. El valor predeterminado para todos los tipos de datos es Cada valor.

Tipo de datos del campo	Valor	Agrupa los registros con	Visual Basic
Texto	(Predeterminado) Cada valor	El mismo valor contenido en el campo o expresión.	0
	Caracteres prefijados	Los mismos primeros n caracteres del campo o expresión.	1
Fecha/Hora	(Predeterminado) Cada valor	El mismo valor contenido en el campo o expresión.	0
	Año	Fechas en el mismo año del calendario.	2
	Trimestre	Fechas en el mismo trimestre del calendario.	3
	Mes	Fechas en el mismo mes.	4
	Semana	Fechas en la misma semana.	5
	Día	Fechas en la misma fecha.	6
	Hora	Horas en la misma hora del día.	7
	Minuto	Horas en el mismo minuto.	8
Autonumérico, Moneda, Número	(Predeterminado) Cada valor	El mismo valor contenido en el campo o expresión.	0
	Intervalo	Valores dentro de un intervalo que se especifique.	9
Se puede establecer la propiedad AgruparEn (GroupOn) utilizando el cuadro Ordenar y agrupar, una macro o Visual Basic.

En Visual Basic, esta propiedad se establece en el procedimiento de evento Open de un informe.

Comentarios

Para establecer la propiedad AgruparEn (GroupOn) a un valor distinto a Cada valor, primero hay que establecer la propiedad Encabezado del grupo o Pie del grupo o ambas a Sí para el campo o expresión seleccionados.


Propiedad MantenerJuntos (KeepTogether) - Grupos
Propiedad MantenerJuntos (KeepTogether) — Grupos

La propiedad MantenerJuntos (KeepTogether) se puede utilizar en un grupo de un informe para mantener juntas en la misma página las partes de un grupo, que son el encabezado de grupo, sección de detalle y pie de página de grupo. Por ejemplo, se puede desear que un encabezado de grupo siempre se imprima en la misma página que la de la primera sección de detalle.

Valores

La propiedad MantenerJuntos (KeepTogether) de un grupo puede tener los valores siguientes.

Valor	Descripción	Visual Basic
No	(Predeterminado) Imprime el grupo sin mantener en la misma página el encabezado, sección de detalle y pie de página del grupo.	0
Grupo entero	Imprime en la misma página el encabezado, sección de detalle y pie de página del grupo.	1
Con el primer detalle	Imprime el encabezado de grupo en una página sólo si puede imprimir también el primer registro de detalle.	2
Se puede establecer la propiedad MantenerJuntos (KeepTogether) para un grupo utilizando el cuadro Ordenar y agrupar, una macro o Visual Basic.

En Visual Basic, se establece la propiedad MantenerJuntos (KeepTogether) para un grupo en la vista Diseño del informe o en el procedimiento de evento Open de un informe utilizando la propiedad GroupLevel.

Comentarios

Para establecer la propiedad MantenerJuntos (KeepTogether) de un grupo a un valor diferente a No, hay que establecer la propiedad Encabezado del grupo o Pie del grupo o ambas a Sí para el campo o expresión seleccionados.

Un grupo incluye el encabezado de grupo, sección de detalle y pie de página de grupo. Si se establece la propiedad MantenerJuntos (KeepTogether) de un grupo a Grupo entero y el grupo es demasiado grande para caber en una página, Microsoft Access ignorará el valor establecido para ese grupo. Igualmente, si se establece esta propiedad a Con el primer detalle y el encabezado de grupo o el registro de detalle son demasiado grandes para caber en una página, se ignorará el valor.

Si la propiedad MantenerJuntos (KeepTogether) de una sección está establecida a No y la propiedad MantenerJuntos (KeepTogether) de un grupo está establecida a Grupo entero o Con el primer detalle, se ignora el valor de la propiedad MantenerJuntos (KeepTogether) para esa sección.


Propiedad Orden (SortOrder)

La propiedad Orden (SortOrder) se utiliza para especificar el orden de los campos y expresiones de un informe. Por ejemplo, si se está imprimiendo una lista de proveedores, se pueden ordenar los registros alfabéticamente por nombre de compañía.

Valor

La propiedad Orden (SortOrder) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Ascendente	(Predeterminado) Ordena los valores en orden ascendente (de A a Z, de 0 a 9)	False (0)
Descendente	Ordena los valores en orden descendente (de Z a A, de 9 a 0)	True (–1)
Se puede establecer la propiedad Orden (SortOrder) utilizando el cuadro Ordenar y agrupar, una macro o Visual Basic.

En Visual Basic, la propiedad Orden (SortOrder) se establece en la vista Diseño del informe o en el procedimiento de evento Open de un informe utilizando la propiedad GroupLevel.


Propiedad ImageHeight

La propiedad ImageHeight se puede utilizar en Visual Basic para determinar el alto en twips de la imagen en un control de imagen.

Valores

La propiedad ImageHeight es un valor Entero igual al alto de la imagen en twips.

Esta propiedad es de sólo lectura en todas las vistas.

Comentarios

La propiedad ImageHeight se puede utilizar junto con la propiedad ImageWidth para determinar el tamaño de una imagen en un control de imagen. Esta información se podría utilizar para cambiar las propiedades Altura (Height) y Anchura (Width) del control de la imagen para que coincidan con el tamaño de la imagen mostrada.


Ejemplo de las propiedades ImageHeight e ImageWidth

El siguiente ejemplo indica al usuario que introduzca el nombre de un mapa de bits y luego asigna ese mapa de bits a la propiedad Imagen del control de imagen de Imagen1. Las propiedades ImageHeight e ImageWidth se utilizan para rehacer el tamaño del control de la imagen para que se ajuste al tamaño del mapa de bits.

Sub ObtenerNuevaImagen(frm As Form)

Dim ctlImagen As Control

Set ctlImagen = frm!Imagen1

ctlImagen.Picture = InputBox("Introduzca ruta de acceso y nombre de archivo para nuevo mapa de bits ")

ctlImagen.Altura = ctlImagen.ImageHeight

ctlImagen.Anchura = ctlImagen.ImageWidth

End Sub


Propiedad ImageWidth

La propiedad ImageWidth se puede utilizar en Visual Basic para determinar el ancho en twips de una imagen en un control de imagen.

Valores

La propiedad ImageWidth es un valor Entero igual al ancho de una imagen en twips.

Esta propiedad es de sólo lectura en todas las vistas.

Comentarios

La propiedad ImageWidth se puede utilizar junto con la propiedad ImageHeight para determinar el tamaño de una imagen en un control de imagen. Esta información se podría utilizar para cambiar las propiedades Altura (Height) y Anchura (Width) del control de la imagen para que coincidan con el tamaño de la imagen mostrada.


Propiedad PrefijoProcEvento (EventProcPrefix)

La propiedad PrefijoProcEvento (EventProcPrefix) se puede utilizar para obtener la parte de prefijo de un nombre de procedimiento de evento. Por ejemplo, si hay un botón de comando con un procedimiento de evento llamado Detalles_Click, la propiedad PrefijoProcEvento (EventProcPrefix) devuelve la cadena "Detalles".

Valores

El valor de la propiedad PrefijoProcEvento (EventProcPrefix) es una expresión de cadena.

Esta propiedad sólo está disponible utilizando una macro o Visual Basic y es de sólo lectura en todas las vistas.

Comentarios

Microsoft Access agrega la parte de prefijo del nombre de un procedimiento de evento al nombre del evento que lleva un carácter de subrayado (_).


Propiedad IntervaloDeCronómetro (TimerInterval)

La propiedad IntervaloDeCronómetro (TimerInterval) se puede utilizar para especificar el intervalo, en milisegundos, transcurrido entre los eventos Timer de un formulario.

Valores

El valor de la propiedad IntervaloDeCronómetro (TimerInterval) es un valor de tipo Entero largo entre 0 y 2.147.483.647.

Esta propiedad se puede establecer utilizando la hoja de propiedades del formulario, una macro o Visual Basic.

Nota   Cuando se utiliza Visual Basic, la propiedad IntervaloDeCronómetro (TimerInterval) se establece en el evento Load del formulario.

Comentarios

Para ejecutar código de Visual Basic a los intervalos especificados por la propiedad IntervaloDeCronómetro (TimerInterval), coloque el código en el procedimiento de evento Timer del formulario. Por ejemplo, para requerir registros cada 30 segundos, coloque el código para requerir los registros en el procedimiento de evento Timer del formulario y establezca la propiedad IntervaloDeCronómetro (TimerInterval) a 30000.


Ejemplo de la propiedad IntervaloDeCronómetro (TimerInterval)

En el ejemplo siguiente se muestra cómo crear un botón parpadeante en un formulario que muestre y oculte un icono en el botón. El procedimiento de evento Load del formulario establece la propiedad IntervaloDeCronómetro (TimerInterval) del formulario a 1000 de forma que la presentación del icono cambia una vez al segundo.

Sub Form_Load()

Me.TimerInterval = 1000

End Sub

Sub Form_Timer()

Static entMostrarImagen As Integer

If entMostrarImagen Then

' Muestra el icono.

Me!btnImagen.Picture = "C:\Icons\Flash.ico"

Else

' No muestra el icono.

Me!btnImagen.Picture = ""

End If

entMostrarImagen = Not entMostrarImagen

End Sub


Propiedad RepeticiónAutomática (AutoRepeat)

La propiedad RepeticiónAutomática (AutoRepeat) se puede utilizar para especificar si se va a ejecutar repetidas veces un procedimiento de evento o una macro mientras permanece presionado un botón de comando de un formulario.

Valores

La propiedad RepeticiónAutomática (AutoRepeat) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	La macro o procedimiento de evento del evento Click se ejecuta repetidas veces mientras permanece presionado el botón de comando.	True (–1)
No	(Predeterminado) La macro o procedimiento de evento se ejecuta una sola vez.	False (0)
Esta propiedad se puede establecer utilizando la hoja de propiedades del botón de comando, una macro o Visual Basic.

Comentarios

La repetición inicial del procedimiento de evento o macro se produce 0,5 segundos después de ejecutarlo por primera vez. Las repeticiones subsiguientes se producen bien cada 0,25 segundos o bien transcurrido el tiempo que dure el procedimiento de evento o macro, el tiempo que sea más largo de ellos.

Si el código adjunto al botón de comando hace que cambie el registro actual, la propiedad RepeticiónAutomática (AutoRepeat) no surte ningún efecto.

Si el código adjunto al botón de comando hace cambiar a otro control del formulario, se utiliza la función DoEvents para hacer que se produzca la actualización apropiada de la pantalla.


Propiedad Contar (Count) (Microsoft Access)
Propiedad Contar (Count)

La propiedad Contar (Count) se puede utilizar para determinar el número de formularios o informes abiertos o el número de controles que hay en un formulario o informe abierto.

Valores

El valor de la propiedad Contar (Count) es un valor de tipo Entero y es de sólo lectura en todas las vistas.

Se puede determinar la propiedad Contar (Count) de un objeto utilizando una macro o Visual Basic.

Si no hay formularios o informes abiertos, el valor de la propiedad Contar (Count) es 0.


Ejemplo de la propiedad Contar (Count)

En el ejemplo siguiente se utiliza la propiedad Contar (Count) para controlar un bucle que imprime información acerca de todos los formularios abiertos y sus controles.

Sub Print_Form_Controles()

Dim frm As Form, entI As Integer

Dim entJ As Integer

Dim entControles As Integer, entFormularios As Integer

entForms = Forms.Count	' Número de formularios abiertos.

If entFormularios > 0 Then

For entI = 0 To entFormularios - 1

Set frm = Forms(entI)

Debug.Print frm.Name

entControles = frm.Count

If entControles > 0 Then

For entJ = 0 To entControles - 1

Debug.Print vbTab; frm(entJ).Name

Next entJ

Else

Debug.Print vbTab; "(no hay controles)"

End If

Next entI

Else

CuadroMsj "No hay formularios abiertos.", vbExclamation, "Controles de formularios"

End If

End Sub

En el ejemplo siguiente se determina el número de controles de un formulario y de un informe y se asigna el número a una variable.

Dim entControlesFormulario As Integer

Dim entControlesInforme As Integer

entControlesFormulario = Forms!Empleados.Count

entControlesInforme = Reports!CostesCargo.Count


Propiedad PresentaciónActual (CurrentView)

La propiedad PresentaciónActual (CurrentView) se puede utilizar para determinar cómo se presenta realmente un formulario. Por ejemplo, se puede necesitar saber si un formulario está en vista Formulario o vista Hoja de datos antes de intentar colocar controles en el formulario utilizando Visual Basic.

Valores

La propiedad PresentaciónActual (CurrentView) puede tener los valores siguientes.

Valor	Descripción
0	El formulario se muestra en la vista Diseño del formulario.
1	El formulario se presenta en la vista Formulario.
2	El formulario se presenta en la vista Hoja de datos
Esta propiedad sólo está disponible utilizando una macro o Visual Basic y es de sólo lectura en todas las vistas.

Comentarios

También se puede utilizar esta propiedad para efectuar diferentes tareas, dependiendo de la vista actual. Por ejemplo, un procedimiento de evento podría determinar en qué vista se muestra el formulario y efectuar una tarea si el formulario se muestra en la vista Formulario o una tarea diferente si se muestra en la vista Hoja de datos.


Ejemplo de la propiedad PresentaciónActual (CurrentView)

En el ejemplo siguiente se utiliza la subrutina GetCurrentView para determinar si un formulario está en la vista Formulario o en la vista Hoja de datos. Si está en la vista Formulario, muestra un mensaje al usuario en un cuadro de texto del formulario; si está en la vista Hoja de datos, muestra el mismo mensaje en un cuadro de mensaje.

GetCurrentView Me, "Por favor, contacte con el administrador del sistema."

Sub GetCurrentView(frm As Form, cadMostrarMsj As String)

Const conFormulario = 1

Const conHojaDeDatos = 2

Dim entModo As Integer

entModo = frm.CurrentView

Select Case entModo

Case conFormulario

frm!MessageTextBox.SetFocus

' Desplaza el enfoque a un cuadro de texto.

frm!MessageTextBox = cadMostrarMsj

Case conHojaDeDatos

' Muestra el mensaje en un cuadro de mensaje.

MsgBox cadMostrarMsj

End Select

End Sub


Propiedades IDDelContextoDeAyuda (HelpContextID) y ArchivoDeAyuda (HelpFile)

•	La propiedad IDDelContextoDeAyuda (HelpContextID) especifica el identificador de contexto de un tema del archivo de ayuda personalizado especificado por el valor de la propiedad ArchivoDeAyuda (HelpFile).

•	La propiedad ArchivoDeAyuda (HelpFile) especifica el nombre de un archivo de ayuda personalizado para el formulario o informe actual.

Valores

•	Para la propiedad IDDelContextoDeAyuda (HelpContextID), se introduce un valor de tipo Entero largo entre 0 y 2.147.483.647 que representa el identificador de contexto del tema del archivo de ayuda que se desea mostrar. El valor predeterminado es 0.

•	Para la propiedad ArchivoDeAyuda (HelpFile), se introduce una expresión de cadena que contiene la ruta de acceso y el nombre de archivo de un archivo de ayuda personalizado creado con el compilador de Ayudas de Windows.

Estas propiedades se pueden establecer utilizando la hoja de propiedades, una macro o Visual Basic. Estas propiedades no se aplican a los controles de informes.

Comentarios

Nota   Para crear un archivo de ayuda personalizado, se necesita el compilador de Ayudas de Windows y un editor de texto que admita formato RTF, como por ejemplo Microsoft Word.

Se puede crear un archivo de ayuda personalizado para documentar formularios, informes o aplicaciones creadas con Microsoft Access.

Cuando se presiona la tecla F1 en la vista Formulario, Microsoft Access llama a la aplicación de Ayuda de Windows, carga el archivo de ayuda especificado por el valor de la propiedad ArchivoDeAyuda (HelpFile) del formulario o informe y muestra el tema de ayuda especificado por el valor de la propiedad IDDelContextoDeAyuda (HelpContextID).

Si el valor de la propiedad IDDelContextoDeAyuda (HelpContextID) de un control es 0 (el predeterminado), Microsoft Access utiliza las propiedades IDDelContextoDeAyuda (HelpContextID) y ArchivoDeAyuda (HelpFile) del formulario para identificar el tema de ayuda que se va a mostrar. Si se presiona la tecla F1 en una vista distinta a Formulario o si el valor de la propiedad IDDelContextoDeAyuda (HelpContextID) para el formulario y el control es 0, se muestra un tema de Ayuda de Microsoft Access.


Propiedades IDDelContextoDeAyuda (HelpContextID) y ArchivoDeAyuda (HelpFile) - Se aplica a
Propiedades IDDelContextoDeAyuda (HelpContextID) y ArchivoDeAyuda (HelpFile) — Se aplica a

Propiedad IDDelContextoDeAyuda (HelpContextID)

Propiedad ArchivoDeAyuda (HelpFile)


Propiedad CVent (hWnd)

La propiedad CVent (hWnd) se puede utilizar para determinar el controlador (un valor único de tipo Entero largo) asignado por Microsoft Windows a la ventana actual.

Valores

Esta propiedad es de sólo lectura y únicamente está disponible utilizando una macro o Visual Basic.

Comentarios

Esta propiedad se puede utilizar en Visual Basic cuando se hacen llamadas a funciones de la Interfaz de programación de aplicaciones (API) de Windows o a otras rutinas externas que requieran la propiedad CVent (hWnd) como argumento. Muchas funciones de Windows requieren el valor de la propiedad CVent (hWnd) de la ventana actual como uno de los argumentos.

Precaución   Como el valor de la propiedad CVent (hWnd) puede cambiar mientras se está ejecutando un programa, no lo almacene en una variable pública.


Ejemplo de la propiedad CVent (hWnd)

En el ejemplo siguiente se utiliza la propiedad CVent (hWnd) con la función IsZoomed de la API de Windows para determinar si está maximizada una ventana.

' Escriba lo siguiente en una sola línea en la sección Declaraciones de la ventana Módulo.

Declare Function IsZoomed Lib "usuario32" (ByVal hWnd As Long) As Long

Sub Form_Activate()

Dim entControladorVentana As Long

entControladorVentana = Screen.ActiveForm.hWnd

If Not IsZoomed(entControladorVentana) Then

DoCmd.Maximize

End If

End Sub


Propiedad EnLaSelección (InSelection)

La propiedad EnLaSelección (InSelection) se puede utilizar para determinar o especificar si está seleccionado un control de un formulario en la vista Diseño del formulario.

Valores

La propiedad EnLaSelección (InSelection) puede tener los valores siguientes.

Valor	Descripción
True (–1)	El control está seleccionado.
False (0)	El control no está seleccionado.
Esta propiedad sólo está disponible utilizando una macro o Visual Basic.

Comentarios

Cuando está seleccionado un control, sus controles de tamaño son visibles y el usuario puede cambiarlo de tamaño. Puede haber más de un control seleccionado al mismo tiempo.


Ejemplo de la propiedad EnLaSelección (InSelection)

En la siguiente función se utiliza la propiedad EnLaSelección (InSelection) para determinar si está seleccionado el control cadNombreControl de un formulario.

Para probar este código, pegue el código de la función EstáSeleccionadoElControl en la sección Declaraciones de un módulo de código de la base de datos de ejemplo Neptuno, abra el formulario Clientes en la vista Diseño y seleccione el control NombreCompañía. Luego introduzca la línea siguiente en la ventana Depuración:

? EstáSeleccionadoElControl(Forms!Clientes, "NombreCompañía")

Function EstáSeleccionadoElControl(frm As Form, cadNombreControl As String) As Integer

Dim entI As Integer, ctl As Control

If frm.CurrentView <> 0 Then

' El formulario no está en la vista Diseño.

Exit Function

Else

For entI = 0 To frm.Count - 1

Set ctl = frm(entI)

If ctl.InSelection = True Then

' ¿Está seleccionado el control deseado?

If UCase(ctl.Name) = UCase(cadNombreControl) Then

EstáSeleccionadoElControl = True

Exit Function

End If

Else

EstáSeleccionadoElControl = False

End If

Next entI

End If

End Function


Propiedad AbrirArgs (OpenArgs)

La propiedad AbrirArgs (OpenArgs) se puede utilizar para determinar la expresión de cadena especificada por el argumento abrirargs del método OpenForm que ha abierto un formulario.

Valores

Esta propiedad sólo está disponible utilizando una macro o utilizando Visual Basic con el método OpenForm del objeto DoCmd. El valor de esta propiedad es de sólo lectura en todas las vistas.

Comentarios

Para utilizar la propiedad AbrirArgs (OpenArgs), abra un formulario utilizando el método OpenForm del objeto DoCmd y establezca el argumento abrirargs a la expresión de cadena deseada. Luego puede usar el valor de la propiedad AbrirArgs (OpenArgs) dentro de código para el formulario, como un procedimiento de evento Open. También se puede hacer referencia a la propiedad en una macro, por ejemplo una macro Abrir, o en una expresión, por ejemplo una expresión que establece la propiedad OrigenDelControl (ControlSource) de un control del formulario.

Por ejemplo, supongamos que el formulario que abre es una lista de formulario continuo de clientes. Si desea que el enfoque se mueva a un registro de cliente específico cuando se abre el formulario, puede establecer la propiedad AbrirArgs (OpenArgs) al nombre del cliente y usar luego la acción BuscarRegistro en una macro Abrir para mover el enfoque al registro del cliente que tiene el nombre especificado.


Ejemplo de la propiedad AbrirArgs (OpenArgs)

En el ejemplo siguiente se utiliza la propiedad AbrirArgs (OpenArgs) para abrir el formulario Empleados en un registro de empleado específico y se muestra cómo establece el método OpenForm la propiedad AbrirArgs (OpenArgs). Este procedimiento se puede ejecutar como convenga, por ejemplo, cuando se produce el evento AfterUpdate de un cuadro de diálogo personalizado que se usa para introducir información nueva acerca de un empleado.

Sub AbrirEnGómez()

DoCmd.OpenForm "Empleados", acNormal, , , acReadOnly, , "Gómez"

End Sub

Sub Form_Open(Cancel As Integer)

Dim cadNombreEmpleado As String

' Si la propiedad OpenArgs contiene el nombre del empleado,

' busca el registro de empleado correspondiente y lo muestra

' en el formulario. Por ejemplo, si OpenArgs contiene "Gómez",

' se mueve al primer registro "Gómez".

cadNombreEmpleado = Forms!Empleados.OpenArgs

If Len(cadNombreEmpleado) > 0 Then

DoCmd.GoToControl "Apellido"

DoCmd.FindRecord cadNombreEmpleado, , True, , True, , True

End If

End Sub

En el ejemplo siguiente se utiliza el método FindFirst para buscar el registro del empleado especificado en la propiedad AbrirArgs (OpenArgs).

Private Sub Form_Open(Cancel As Integer)

If Not IsNull(Me.OpenArgs) Then

Dim cadNombreEmpleado As String

cadNombreEmpleado = Me.OpenArgs

Dim RS As Recordset

Set RS = Me.RecordsetClone

RS.FindFirst "Apellido = '" & cadNombreEmpleado & "'"

If Not RS.NoMatch Then

Me.Bookmark = RS.Bookmark

End If

End If

End Sub


Propiedad Anterior (PreviousControl)

La propiedad Anterior (PreviousControl) se puede utilizar con el objeto Pantalla (Screen) para devolver una referencia al último control que ha recibido el enfoque.

Valores

El valor de la propiedad Anterior (PreviousControl) contiene una referencia al control que que recibió el enfoque por última vez. Una vez establecida la referencia al control, puede tener acceso a todas sus propiedades y métodos.

Esta propiedad es de sólo lectura y solamente está disponible utilizando una macro o Visual Basic.

Comentarios

No se puede utilizar la propiedad Anterior (PreviousControl) hasta que más de un control de cualquier formulario haya recibido el enfoque después de abrir el formulario. Microsoft Access genera un error si se intenta utilizar esta propiedad cuando sólo ha recibido el enfoque un control del formulario.


Ejemplo de la propiedad Anterior (PreviousControl)

En el ejemplo siguiente se muestra un mensaje si el último control que ha recibido el enfoque no era el cuadro de texto txtÚltimaEntrada.

Function ProcesarDatos() As Integer

Dim ctlPrevious As Control

' No ha habido error del control anterior.

Const conNoHayControlAnterior = 2483

On Error GoTo Procesar_Err

Set ctlPrevious = Screen.PreviousControl

If ctlPrevious.Name = "txtÚltimaEntrada" Then

' Aquí se procesan los datos.

.

.

.

ProcesarDatos = True

Else

' Establece el enfoque a txtÚltimaEntrada y muestra un mensaje.

Me!txtÚltimaEntrada.SetFocus

MsgBox "Introduzca un valor aquí."

ProcesarDatos = False

End If

Procesar_Fin:

Exit Function

Process_Err:

If Err = conNoHayControlAnterior Then

Me!txtÚltimaEntrada.SetFocus

MsgBox "Introduzca un valor a procesar."

ProcesarDatos = False

End If

Resume Procesar_Fin

End Function


Propiedad Ciclo (Cycle)

Puede utilizar la propiedad Ciclo (Cycle) para especificar qué sucede cuando se presiona la tecla TAB y el enfoque se encuentra en el último control de un formulario dependiente.

Valores

La propiedad Ciclo (Cycle) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Todos los registros	(Predeterminado) Al presionar la tecla TAB en el último control de un formulario, el enfoque se desplaza al primer control del orden de tabulación del siguiente registro.	0
Registro activo	Al presionar la tecla TAB en el último control de un registro, el enfoque se desplaza al primer control del orden de tabulación del mismo registro.	1
Página activa	Al presionar la tecla TAB en el último control de una página, el enfoque regresa al primer control del orden de tabulación de la página.	2
Puede establecer la propiedad Ciclo (Cycle) mediante la hoja de propiedades del formulario, una macro o Visual Basic.

Puede establecer la propiedad Ciclo (Cycle) en cualquier vista.

Comentarios

Al presionar la tecla TAB en un formulario, el enfoque se desplaza por los controles del formulario según cuál sea el lugar del control en el orden de tabulación.

Puede establecer la propiedad Ciclo (Cycle) a Todos los registros para los formularios designados para la entrada de datos. Esto permite al usuario desplazarse a un registro nuevo al presionar la tecla TAB.

Nota   La propiedad Ciclo (Cycle) sólo controla el comportamiento de la tecla TAB en el formulario en el que se establece la propiedad. Si un control de subformulario se encuentra en el orden de tabulación, una vez que el control de subformulario recibe el enfoque, el valor de la propiedad Ciclo (Cycle) del subformulario determina qué sucede al presionar la tecla TAB.

Para mover el enfoque fuera de un control de subformulario, presione CTRL+TAB.


Propiedad TeclaDePresentaciónPreliminar (KeyPreview)

Puede utilizar la propiedad TeclaDePresentaciónPreliminar (KeyPreview) para especificar si los procedimientos de evento del teclado a nivel del formulario se llaman antes de los procedimientos de evento del teclado de un control.

Nota   Los eventos de teclado son KeyDown, KeyUp y KeyPress.

Valores

La propiedad TeclaDePresentaciónPreliminar (KeyPreview) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	El formulario recibe primero los eventos del teclado y, a continuación, el control activo recibe los eventos del teclado.	True (–1)
No	(Predeterminado) Sólo el control activo recibe los eventos del teclado.	False (0)
Puede establecer la propiedad TeclaDePresentaciónPreliminar (KeyPreview) mediante la hoja de propiedades del formulario, una macro o Visual Basic.

Puede establecer la propiedad TeclaDePresentaciónPreliminar (KeyPreview) en cualquier vista.

Comentarios

Puede utilizar la propiedad TeclaDePresentaciónPreliminar (KeyPreview) para crear un procedimiento de control de teclado para un formulario. Por ejemplo, cuando una aplicación utiliza las teclas de función, el establecimiento de la propiedad TeclaDePresentaciónPreliminar (KeyPreview) a True le permite procesar pulsaciones de teclas a nivel del formulario en lugar de escribir código para cada control que pueda recibir eventos de pulsaciones de teclas.

Para controlar eventos del teclado sólo a nivel del formulario e impedir que los controles reciban eventos del teclado, establezca el argumento KeyAscii a 0 en el procedimiento de evento KeyPress del formulario y establezca el argumento KeyCode a 0 en los procedimientos de evento KeyDown y KeyUp del formulario.

Si un formulario no tiene ningún control visible o activado, recibe automáticamente todos los eventos del teclado.


Ejemplo de la propiedad TeclaDePresentaciónPreliminar (KeyPreview)

En el ejemplo siguiente, la propiedad TeclaDePresentaciónPreliminar (KeyPreview) está establecida a True (–1) en el procedimiento de evento Load del formulario. Esto hace que el formulario reciba eventos del teclado antes de que sean recibidos por algún control. El evento KeyDown del formulario comprueba entonces el valor del argumento KeyCode para determinar si se presionaron las teclas F2, F3 o F4.

Private Sub Form_Load()

Me.KeyPreview = True

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

Case vbKeyF2

' Procesar los eventos de la tecla F2.

Case vbKeyF3

' Procesar los eventos de la tecla F3.

Case vbKeyF4

' Procesar los eventos de la tecla F4.

Case Else

End Select

End Sub


Propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar)

Puede utilizar la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) para especificar el menú contextual que aparecerá al hacer clic con el botón secundario del mouse (ratón) en un formulario, un informe o un control de un formulario. Para crear estos menús contextuales, elija Barras de herramientas en el menú Ver y, a continuación, haga clic en Personalizar. Para obtener más información acerca de cómo crear barras de herramientas personalizadas, vea Crear un menú contextual personalizado para la base de datos actual

Nota   La propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) se aplica sólo a los controles de un formulario, no a los controles de un informe.

También puede utilizar la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) para especificar la macro de barra de menús que se utilizará para mostrar un menú contextual para una hoja de datos, un formulario, un control de formulario o un informe.

Nota   En versiones anteriores de Microsoft Access, los menús contextuales personalizados se creaban estableciendo la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) al nombre de una macro de barra de menús. A continuación, se creaba un grupo de macros que contenía los comandos de este menú. Esta funcionalidad aún se admite en Microsoft Access 97. No obstante, se recomienda utilizar el nuevo cuadro de diálogo Personalizar, disponible al elegir Barras de herramientas en el menú Ver y, a continuación, hacer clic en Personalizar, para crear menús contextuales personalizados.

Valores

Introduzca el nombre del menú contextual que desea mostrar. Un menú contextual puede ser cualquier barra de comandos cuya propiedad Tipo de barra de herramientas esté establecida a Emergente. Si deja el valor de la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) en blanco, Microsoft Access muestra el menú contextual incorporado (predeterminado) o el menú contextual global de la aplicación. Si establece la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) a un valor que no es el nombre de un menú contextual o una macro de barra de menús existente, el formulario, el control de formulario o el informe no tendrán un menú contextual (el menú contextual predeterminado no se mostrará).

Puede establecer esta propiedad mediante la hoja de propiedades del objeto, una macro o Visual Basic.

En Visual Basic, esta propiedad se establece mediante una expresión de cadena que es el nombre del menú contextual que desea mostrar.

Para mostrar el menú contextual incorporado de una base de datos, un formulario, un control de formulario o un informe mediante una macro o Visual Basic, establezca la propiedad a una cadena de longitud cero (" ").

Comentarios

Para crear un menú contextual personalizado, primero cree una barra de herramientas que incluya todos los comandos que desea que aparezcan en el menú contextual personalizado. A continuación, abra el cuadro de diálogo Propiedades de la barra de herramientas seleccionando la barra de herramientas en el cuadro de diálogo Personalizar y haciendo clic en el botón Propiedades. En el cuadro de diálogo Propiedades de la barra de herramientas, establezca la propiedad Tipo de barra de herramientas a Emergente. Esta barra de herramientas estará ahora disponible en el cuadro de la propiedad Barra de menús contextuales (ShortcutMenuBar) de la hoja de propiedades de un formulario, un control de formulario o un informe.

Cuando se utiliza con el objeto Application, la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) permite mostrar un menú contextual personalizado como un menú contextual global. No obstante, si ha establecido la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) para un formulario, un control de formulario o un informe de la base de datos, el menú contextual personalizado de ese objeto se mostrará en lugar del menú contextual global de la base de datos. Puede mostrar un menú contextual personalizado diferente para un formulario, un control de formulario o un informe específico estableciendo su propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) a un menú contextual diferente. Cuando el formulario, el control de formulario o el informe tiene el enfoque, se muestra el menú contextual personalizado de ese objeto cuando el usuario hace clic con el botón secundario del mouse (ratón); de lo contrario, se muestra el menú contextual global de la base de datos.

Los menús contextuales no están disponibles para ningún objeto si la propiedad PermitirMenúsContextuales (AllowShortcutMenus) se establece a False (0).


Propiedad BotónQuéEsEsto (WhatsThisButton)

Puede utilizar la propiedad BotónQuéEsEsto (WhatsThisButton) para especificar si un botón ¿Qué es esto?    se agrega a la barra de título de un formulario.

Nota   No es posible mostrar el botón ¿Qué es esto? en la barra de título de un formulario a no ser que la propiedad BotonesMinMax (MinMaxButtons) esté establecida a Ninguno.

Valores

La propiedad BotónQuéEsEsto (WhatsThisButton) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	Aparece un botón ¿Qué es esto? en la barra de título.	True (–1)
No	(Predeterminado) No aparece un botón ¿Qué es esto? en la barra de título.	False (0)
Puede establecer la propiedad BotónQuéEsEsto (WhatsThisButton) mediante la hoja de propiedades del formulario, una macro o Visual Basic.

Esta propiedad puede establecerse sólo en la vista Diseño del formulario.

Comentarios

Al hacer clic en el botón ¿Qué es esto? de la barra de título de un formulario, aparece el puntero del mouse (ratón) de signo de interrogación de cierre. Con el puntero de signo de interrogación de cierre, puede hacer clic en cualquier control para tener acceso a su tema de Ayuda personalizado especificado por la propiedad IDDelContextoDeAyuda (HelpContextID) del control. Si el control no tiene un tema de Ayuda personalizado, se muestra el tema de Ayuda personalizado del formulario. Si ni el formulario ni el control tienen un tema de Ayuda personalizado, se muestra la Ayuda de Microsoft Access.


Propiedad TextoDeAyudaDelControl (ControlTipText)

Puede utilizar la propiedad TextoDeAyudaDelControl (ControlTipText) para especificar el texto de las sugerencias acerca de la barra de herramientas que aparece al situar el puntero del mouse (ratón) sobre un control.

Valores

La propiedad TextoDeAyudaDelControl (ControlTipText) se establece mediante una expresión de cadena de hasta 255 caracteres de longitud.

Es posible establecer la propiedad TextoDeAyudaDelControl (ControlTipText) mediante la hoja de propiedades del control, una macro o Visual Basic.

Para los controles de los formularios, puede establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado o el método DefaultControl de Visual Basic.

La propiedad TextoDeAyudaDelControl (ControlTipText) puede establecerse en cualquier vista.

Comentarios

La propiedad TextoDeAyudaDelControl (ControlTipText) es una forma sencilla de proporcionar información acerca de los controles de un formulario.

Existen otras formas de ofrecer información acerca de un formulario o un control de un formulario. Puede utilizar la propiedad TextoDeLaBarraDeEstado (StatusBarText) para mostrar información acerca de un control en la barra de estado. Para proporcionar una ayuda más amplia para un formulario o un control, utilice las propiedades ArchivoDeAyuda (HelpFile) e IDDelContextoDeAyuda (HelpContextID).


Propiedades de la base de datos

Las propiedades de la Base de datos permiten proporcionar información adicional acerca de la base de datos. Para ver las propiedades de la Base de datos, elija Propiedades de la base de datos en el menú Archivo.

Valores

Puede establecer estas propiedades introduciendo información en las fichas Resumen o Personalizar del cuadro de diálogo Propiedades de NombreDeBaseDeDatos o mediante Visual Basic.

En Visual Basic, si una propiedad de la Base de datos todavía no se ha establecido en el cuadro de diálogo Propiedades de NombreDeBaseDeDatos, debe crear la propiedad mediante el método CreateProperty y anexarla a la colección Properties de un objeto Document. Con Visual Basic, puede establecer las propiedades que aparecen en la ficha Resumen mediante el objeto Document SummaryInfo de la colección Documents. Las propiedades se establecen en la ficha Personalizar mediante el objeto Document UserDefined de la colección Documents. Debe proporcionar un nombre, un tipo de datos y un valor predeterminado para una propiedad de la Base de datos personalizada con el fin de poder agregarla a la base de datos. Si desea obtener más información, haga clic en Detalles en el tema de la colección Documents.

Nota   Sólo es posible introducir o modificar las propiedades que aparecen en las fichas Resumen o Personalizar. Las demás propiedades de la Base de datos son de sólo lectura.

Comentarios

Las propiedades de la Base de datos aparecen en el cuadro de diálogo Propiedades de NombreDeBaseDeDatos en las siguientes fichas.

Ficha	Descripción
General	Se trata de la misma información que se muestra al hacer clic con el botón secundario del mouse (ratón) en el nombre de un archivo en el Explorador de Windows y, a continuación, hacer clic en Propiedades en el menú contextual. La única diferencia es que cuando estas propiedades se ven en Microsoft Access, el valor de los Atributos es Sólo lectura.
Resumen	La información introducida en esta ficha se agrega al objeto Document SummaryInfo de la colección Documents. Esta información es similar a la información de resumen que puede proporcionar en otras aplicaciones de Microsoft Office. La información de resumen permite al usuario identificar mejor una base de datos tanto desde Microsoft Access como desde otros programas, como por ejemplo el programa Buscar archivos de Windows. El valor de Base del hipervínculo en la ficha Resumen se utiliza para crear la ruta de acceso al hipervínculo base que se anexa al principio del valor de la propiedad DirecciónDeHipervínculo (HyperlinkAddress).
Estadísticas	Esta información incluye la fecha y la hora en la que se creó la base de datos activa, así como la última fecha y hora en que se modificó, se tuvo acceso a ella y se imprimió.
Contenido	Esta información incluye los nombres de los objetos que contiene la base de datos.
Personalizar	Las propiedades personalizadas introducidas se convierten en propiedades del objeto Document UserDefined de la colección Documents.


Ejemplo de propiedades de la base de datos

En el ejemplo siguiente, puede establecer o crear una propiedad personalizada definida por el usuario que aparecerá en la ficha Personalizar del cuadro de diálogo Propiedades de NombreDeBaseDeDatos. Por ejemplo, puede llamar a la función EstablecerPropPersonalizada para agregar una nueva propiedad denominada ApellidosDelUsuario al objeto Document UserDefined de la base de datos. Los argumentos pasados a la función EstablecerPropPersonalizada son los necesarios para ejecutar el método CreateProperty.

Dim cadNombre As String, cadValor As String

' Establecer la variable del nombre de la propiedad.

cadNombre = "ApellidosDelUsuario"

' Establecer la variable del valor de la propiedad.

cadValor = InputBox("Escriba su nombre completo")

If EstablecerPropPersonalizada(cadNombre, dbText, cadValor) <> True Then

' Se ha producido un error al intentar establecer la propiedad.

MsgBox "Se ha producido un error al intentar establecer la propiedad."

End If

Function EstablecerPropPersonalizada(cadNombreProp As String, entTipoProp _

As Integer, cadValorProp As String) As Integer

Dim dbs As Database, cnt As Container

Dim doc As Document, prp As Property

Const conPropiedadNoEncontrada = 3270	' Error de propiedad no encontrada.

Set dbs = CurrentDb	' Definir el objeto de la base de datos.

Set cnt = dbs.Containers!Databases	' Definir el objeto Container.

Set doc = cnt.Documents!UserDefined	' Definir el objeto Document.

On Error GoTo EstablecerPropPersonalizada_Err

doc.Properties.Refresh

' Establecer el nombre de la propiedad. Si se produce un error aquí significa

' que la propiedad no existe y que debe crearse y anexarse

' a la colección Properties del objeto Document.

Set prp = doc.Properties(cadNombreProp)

prp = cadValorProp	' Establecer el valor de la propiedad personalizada.

EstablecerPropPersonalizada = True

EstablecerPropPersonalizada_salir:

Exit Function

EstablecerPropPersonalizada_Err:

If Err = conPropiedadNoEncontrada Then

Set prp = doc.CreateProperty(cadNombreProp, entTipoProp, cadValorProp)

doc.Properties.Append prp	' Anexar a la colección.

Resume Next

Else	' Error desconocido.

EstablecerPropPersonalizada = False

Resume EstablecerPropPersonalizada_salir

End If

End Function

El ejemplo siguiente muestra cómo mostrar la información de la ficha Resumen del cuadro de diálogo Propiedades de NombreDeBaseDeDatos. El título, el asunto y el autor de la aplicación se muestran en los controles de cuadro de texto de un formulario. En este ejemplo, si la propiedad no se ha establecido aún, el procedimiento devuelve "Ninguno". Si se produce un error desconocido, se devuelve una cadena de longitud cero (" ").

Private Sub Form_Open(Cancel As Integer)

Dim cadTítulo As String, cadAsunto As String, cadAutor As String

cadTítulo = "Título"

cadAsunto = "Asunto"

cadAutor = "Autor"

Me!txtTítulo = ObtenerInfoResumen(cadTítulo)

Me!txtAsunto = ObtenerInfoResumen(cadAsunto)

Me!txtAutor = ObtenerInfoResumen(cadAutor)

End Sub

Function ObtenerInfoResumen(cadNombreProp As String) As String

Dim dbs As Database, cnt As Container

Dim doc As Document, prp As Property

' Error de propiedad no encontrada.

Const conPropiedadNoEncontrada = 3270

On Error GoTo ObtenerInfoResumen_Err

Set dbs = CurrentDb

Set cnt = dbs.Containers!Databases

Set doc = cnt.Documents!SummaryInfo

doc.Properties.Refresh

ObtenerInfoResumen = doc.Properties(cadNombreProp)

ObtenerInfoResumen_salir:

Exit Function

ObtenerInfoResumen_Err:

If Err = conPropiedadNoEncontrada Then

Set prp = doc.CreateProperty(cadNombreProp, dbText, "Ninguno")

' Anexar a la colección.

doc.Properties.Append prp

Resume

Else

' Error desconocido.

ObtenerInfoResumen = ""

Resume ObtenerInfoResumen_salir

End If

End Function


Propiedades de objetos

Las propiedades del Objeto proporcionan información general acerca de los objetos que contiene la ventana Base de datos.

Valores

Puede ver las propiedades del Objeto y establecer las propiedades Descripción o Atributos de las formas siguientes:

•	Haga clic en un objeto de la ventana Base de datos y, a continuación, haga clic en Propiedades  [image]  en la barra de herramientas Base de datos.

•	Haga clic en un objeto de la ventana Base de datos y, a continuación, haga clic en Propiedades en el menú Ver.

•	Haga clic con el botón secundario del mouse (ratón) en un objeto de la ventana Base de datos y, a continuación, haga clic en Propiedades en el menú contextual.

También puede especificar o determinar las propiedades del Objeto mediante Visual Basic.

Nota   Sólo es posible introducir o modificar las propiedades Descripción y Atributos. Las demás propiedades del Objeto se establecen mediante Microsoft Access y son de sólo lectura.

Comentarios

Los objetos de la ventana Base de datos son tablas, consultas, formularios, informes, macros y módulos. Cada clase de objetos de la base de datos se representa mediante un objeto Document independiente dentro de la colección Containers. Por ejemplo, la colección Containers contiene un objeto Document que representa todos los formularios de la base de datos.

Las propiedades del Objeto siguientes están disponibles en la ventana Base de datos.

Propiedad	Descripción
Nombre	Es el nombre del objeto y contiene el valor de la propiedad Nombre (Name) del objeto.
Tipo	Es el tipo de objeto. Los tipos de objeto de Microsoft Access son Formulario, Macro, Módulo, Consulta, Informe y Tabla.
Descripción	Se trata de la descripción del objeto y es la misma que el valor de la propiedad Descripción del objeto. Para las tablas y consultas, también puede establecer la propiedad Descripción del objeto en la hoja de propiedades del objeto. También aparece una descripción del objeto junto al nombre del objeto en la ventana Base de datos al elegir Detalles en el menú Ver.
Creado	Es la fecha en la que se creó el objeto. Para tablas y consultas, esta propiedad es igual que la propiedad DateCreated.
Modificado	Es la fecha en la que el objeto se modificó por última vez. Para tablas y consultas, esta propiedad es igual que la propiedad LastUpdated.
Propietario	Es el propietario del objeto. Para obtener más información, vea la propiedad Propietario.
Atributos	Esta propiedad especifica si el objeto está oculto o visible y si el objeto puede replicarse en una réplica de base de datos. Si establece el atributo Oculto a True (mediante la activación de la casilla de verificación Oculto), el objeto no aparecerá en la ventana Base de datos. Para mostrar objetos ocultos en la ventana Base de datos, elija Opciones en el menú Herramientas, haga clic en la ficha Ver y, a continuación, seleccione la casilla de verificación Objetos ocultos. Los iconos de los objetos ocultos aparecerán atenuados en la ventana Base de datos. A continuación, puede desactivar el atributo Oculto para hacer que los objetos sean visibles en la ventana Base de datos.


Ejemplo de propiedades de objetos

El ejemplo siguiente utiliza la subrutina ImprimirPropsDeObjeto para mostrar los valores de las propiedades del Objeto correspondientes a un objeto de la ventana Depuración. La subrutina solicita el tipo de objeto y el nombre del objeto como argumentos.

Dim cadTipoObjeto As String

Dim cadNombreObjeto As String

Dim cadMsj As String

cadMsj = "Introduzca el tipo de objeto (por ejemplo, Formularios, Secuencias de comandos, " _

& "Módulos, Informes, Tablas)."

' Obtener el tipo de objeto.

cadTipoObjeto = InputBox(cadMsj)

cadMsj = "Introduzca el nombre de un formulario, macro, módulo, " _

& "consulta, informe o tabla."

' Obtener el nombre del objeto introducido por el usuario.

cadNombreObjeto = InputBox(cadMsj)

' Pasar el tipo de objeto y el nombre del objeto a

' la subrutina ImprimirPropsDeObjeto.

ImprimirPropsDeObjeto cadTipoObjeto, cadNombreObjeto

Sub ImprimirPropsDeObjeto(cadTipoObjeto As String, cadNombreObjeto _

As String)

Dim dbs As Database, ctr As Container, doc As Document

Dim entI As Integer

Dim cadCarTab As String

Dim prp As Property

Set dbs = CurrentDb

cadCarTab = vbTab

' Establecer la variable del objeto Container.

Set ctr = dbs.Containers(cadTipoObjeto)

' Establecer la variable del objeto Document.

Set doc = ctr.Documents(cadNombreObjeto)

doc.Properties.Refresh

' Mostrar el nombre del objeto en la ventana Depuración.

Debug.Print doc.Name

' Mostrar cada propiedad del objeto en la ventana Depuración.

For Each prp in doc.Properties

Debug.Print cadCarTab & prp.Name & " = " & prp.Value

Next

End Sub


Propiedades SelHeight y SelWidth

La propiedad SelHeight se utiliza para especificar o determinar el número de filas seleccionadas (registros) en el rectángulo de selección activo de una tabla, consulta, u hoja de datos del formulario, o el número de registros seleccionados en un formulario continuo. La propiedad SelWidth se utiliza para especificar o determinar el número de columnas seleccionadas (campos) en el rectángulo de selección activo. Por ejemplo, si ha seleccionado un grupo de filas y columnas en una vista Hoja de datos de la tabla Clientes, puede usar las propiedades SelHeight y SelWidth para determinar el número de filas y de columnas en el rectángulo de selección.

Valores

•	La propiedad SelHeight. Un valor de tipo Entero largo entre 0 y el número de registros en la hoja de datos o en el formulario continuo. El valor de esta propiedad especifica o devuelve el número de filas seleccionadas en el rectángulo de selección o el número de registros seleccionados en el formulario continuo.

•	La propiedad SelWidth. Un valor de tipo Entero largo entre 0 y el número de columnas en la hoja de datos. El valor de esta propiedad especifica o devuelve el número de columnas seleccionadas en el rectángulo de selección.

Estas propiedades están disponibles en la vista Diseño. Estas propiedades sólo están disponibles utilizando una macro o Visual Basic.

Comentarios

Si no hay selección, el valor devuelto por estas propiedades será cero. Estableciendo a 0 alguna de estas propiedades se elimina la selección de la hoja de datos o del formulario.

Si se han seleccionado uno o más registros en la hoja de datos (usando los selectores de registros), entonces no se puede cambiar el valor de la propiedad SelWidth (excepto para establecerla a 0). Si ha establecido una o más columnas (usando los encabezados de columnas), no se puede cambiar el valor de la propiedad SelHeight (excepto para establecerla a 0).

Estas propiedades pueden utilizarse junto con las propiedades SelTop y SelLeft para determinar la posición actual del rectángulo de selección en la hoja de datos. Si no hay selección, entonces las propiedades SelTop y SelLeft devuelven el número de fila y de columna de la celda con el enfoque.

Las propiedades SelHeight y SelWidth contienen la posición de la esquina inferior derecha del rectángulo de selección. Los valores de las propiedades SelTop y SelLeft determinan la esquina superior izquierda del rectángulo de selección.


Ejemplo de las propiedades SelHeight, SelWidth, SelTop y SelLeft

El siguiente ejemplo muestra cómo utilizar las propiedades SelHeight, SelWidth, SelTop y SelLeft para determinar la posición y tamaño de un rectángulo de selección en la vista de la hoja de datos. El procedimiento EstablecerAltoAncho asigna el alto y al ancho del rectángulo de selección activo a las variables lngNúmFilas, lngNúmColumnas, lngColumnaSup y lngColumnaIzda, y muestra esos valores en un cuadro de mensaje.

Sub EstablecerAltoAncho(formulario As Form)

Dim lngNúmFilas As Long, lngNúmColumnas As Long

Dim lngColumnaSup As Long, lngColumnaIzda As Long

Dim cadMensaje As String

If formulario.CurrentView = 2 Then	' Formulario está en vista Hoja de datos.

lngNúmFilas = formulario.SelHeight	' Número de filas seleccionadas.

lngNúmColumnas = formulario.SelWidth	' Número de columnas seleccionadas.

lngColumnaSup = formulario.SelTop	' Fila superior seleccionada.

lngColumnaIzda = formulario.SelLeft	' Columna más a la izquierda seleccionada.

cadMensaje = "Número de filas: " & lngNúmFilas & vbCrLf

cadMensaje = cadMensaje & "Número de columnas: " & lngNúmColumnas & vbCrLf

cadMensaje = cadMensaje & "Fila superior: " & lngColumnaSup & vbCrLf

cadMensaje = cadMensaje & "Columna izquierda: " & lngColumnaIzda

MsgBox cadMensaje

End If

End Sub


Propiedades SelTop y SelLeft

La propiedad SelTop se utiliza para especificar o determinar cuál es la fila (registro) superior en el rectángulo de selección activo de una tabla, consulta, u hoja de datos del formulario, o qué registro seleccionado es el superior en un formulario continuo. La propiedad SelLeft se utiliza para especificar o determinar cuál es la columna (campo) que está más a la izquierda del rectángulo de selección activo. Por ejemplo, si ha seleccionado un grupo de filas y columnas dentro de la vista Hoja de datos de la tabla Clientes, puede usar las propiedades SelTop y SelLeft para determinar la primera fila y la primera columna seleccionadas en el rectángulo de selección.

Valores

•	La propiedad SelTop. Un valor de tipo Entero largo entre 1 y el número de registros en la hoja de datos o formulario continuo. El valor de esta propiedad especifica o devuelve el número de la fila superior del rectángulo de selección activo o el número del registro superior seleccionado en el formulario continuo.

•	La propiedad SelLeft. Un valor de tipo Entero largo entre 1 y el número de columnas en la hoja de datos. El valor de esta propiedad especifica o devuelve el número de la columna más a la izquierda del rectángulo de selección activo.

Estas propiedades no están disponibles en la vista Diseño. Estas propiedades sólo están disponibles usando una macro o Visual Basic.

Comentarios

Si no hay selección, el valor devuelto por estas propiedades es la fila y columna de la celda que tenga el enfoque.

Si se han seleccionado uno o más registros en la hoja de datos (usando los selectores de registros), no se puede cambiar el valor de la propiedad SelLeft. Si se han seleccionado una o más columnas (usando los encabezados de columna), no se puede cambiar el valor de la propiedad SelTop.

Estas propiedades pueden utilizarse junto con las propiedades SelHeight y SelWidth para especificar o determinar el tamaño actual del rectángulo de selección. Las propiedades SelTop y SelLeft determinan la posición de la esquina superior izquierda del rectángulo de selección. Las propiedades SelHeight y SelWidth determinan la esquina inferior derecha del rectángulo de selección.


Propiedad CurrentRecord

La propiedad CurrentRecord se utiliza para identificar el registro activo en el conjunto de registros que está siendo mostrado actualmente en un formulario.

Valores

Microsoft Access establece esta propiedad a un valor Entero largo que representa el número del registro activo mostrado en un formulario.

La propiedad CurrentRecord es de sólo lectura en la vista Formulario y en la vista Hoja de datos. Esta propiedad no está disponible en la vista Diseño. Sólo está disponible usando una macro o en Visual Basic.

Comentarios

El valor especificado por esta propiedad corresponde al valor mostrado en el cuadro de número de registro que se encuentra en la esquina inferior izquierda del formulario.


Ejemplo de la propiedad CurrentRecord

El siguiente ejemplo muestra cómo utilizar la propiedad CurrentRecord para determinar el número de registro del registro activo que está siendo presentado. El procedimiento de propósito general RegistroActualDelFormulario asigna el valor del registro activo a la variable lngNúmRegistro.

Sub RegistroActualDelFormulario(formulario As Form)

Dim lngNúmRegistro As Long

lngNúmRegistro = formulario.CurrentRecord

End Sub


Propiedades InsideHeight e InsideWidth

Las propiedades InsideHeight e InsideWidth se utilizan para determinar el alto y ancho (en twips) de la ventana que contiene un formulario.

Valores

•	La propiedad InsideHeight. Un valor Entero expresado en twips que representa el alto de una ventana de formulario.

•	La propiedad InsideWidth. Un valor Entero expresado en twips que representa el ancho de una ventana de formulario.

Las propiedades InsideHeight y InsideWidth sólo están disponibles usando una macro o Visual Basic y pueden establecerse en cualquier momento.

Comentarios

Si desea determinar las dimensiones interiores del propio formulario, use la propiedad Anchura (Width) para determinar el ancho del formulario y la suma de los altos de las secciones visibles del formulario para determinar su alto (la propiedad Altura (Height) sólo se aplica a las secciones del formulario, no a los formularios). El interior de un formulario es la zona dentro del formulario, sin incluir las barras de desplazamiento y los selectores de registros.

También puede usar las propiedades AlturaDeLaVentana (WindowHeight) y AnchuraDeLaVentana (WindowWidth) para determinar el alto y el ancho de la ventana que contiene un formulario.

Si una ventana está maximizada, establecer estas propiedades no tiene ningún efecto hasta que la ventana se haya restaurado a su tamaño normal.


Ejemplo de las propiedades InsideHeight e InsideWidth

El siguiente ejemplo muestra cómo usar las propiedades InsideHeight y InsideWidth para comparar el alto y ancho interior de un formulario con el alto y el ancho de la ventana del formulario. Si las dimensiones de una ventana no son iguales al tamaño del formulario, entonces se cambia el tamaño de la ventana para que coincida con el ancho y alto del formulario.

Sub RestablecerTamañoVentana(formulario As Form)

Dim entAltoVentana As Integer

Dim entAnchoVentana As Integer

Dim entTotalAltoVentana As Integer

Dim entTotalAnchoVentana As Integer

Dim entAltoEncabezado As Integer

Dim entAltoDetalle As Integer

Dim entAltoPie As Integer

' Determinar alto del formulario.

entAltoEncabezado = formulario.Section(acHeader).Height

entAltoDetalle = formulario.Section(acDetail).Height

entAltoPie = formulario.Section(acFooter).Height

entTotalAltoVentana = entAltoEncabezado _

+ entAltoDetalle + intHeightFooter

' Determinar ancho del formulario.

entTotalAnchoVentana = formulario.Width

' Determinar alto y ancho de la ventana.

entAltoVentana = formulario.InsideHeight

entAnchoVentana = formulario.InsideWidth

If entAnchoVentana <> entTotalAnchoVentana Then

formulario.InsideWidth = intTotalFormWidth

End If

If entAltoVentana <> entTotalAltoVentana Then

formulario.InsideHeight = intTotalFormHeight

End If

End Sub


Propiedad NewRecord

La propiedad NewRecord se utiliza para determinar si el registro activo es nuevo o no.

Valores

La propiedad NewRecord utiliza los siguientes valores.

Valores	Descripción
True (–1)	El registro activo es nuevo.
False (0)	El registro activo no es nuevo.
La propiedad NewRecord es de sólo lectura en la vista Formulario y en la vista Hoja de datos. No está disponible en la vista Diseño. Esta propiedad sólo está disponible usando una macro o Visual Basic.

Comentarios

Cuando un usuario se haya movido a un registro nuevo, el valor de la propiedad NewRecord será True tanto si el usuario ha empezado a modificar el registro como si no.


Ejemplo de la propiedad NewRecord

El siguiente ejemplo muestra cómo utilizar la propiedad NewRecord para determinar si el registro activo es un registro nuevo. El procedimiento MarcarNuevoRegistro establece el registro activo a la variable intnewrec. Si el registro es nuevo, se muestra un mensaje notificando de esto al usuario. Puede ejecutar este procedimiento cuando se produce el evento Current  para un formulario.

Sub MarcarNuevoRegistro(formulario As Form)

Dim entNuevoRegistro As Entero

entNuevoRegistro = formulario.NewRecord

If entNuevoRegistro = True Then

MsgBox "Está en un nuevo registro." _

& "@¿Desea agregar nuevos datos?" _

& "@Si no, vaya a un registro existente."

End If

End Sub


Propiedad FormularioDeInicio (StartupForm)

La propiedad FormularioDeInicio (StartupForm) se utiliza para especificar el nombre del formulario que se abre cuando la base de datos se abre por primera vez. Por ejemplo, puede utilizar esta propiedad para mostrar un formulario determinado que contiene un menú con todos los formularios, consultas e informes disponibles en una aplicación Microsoft Access cuando se abre la base de datos.

Valores

La propiedad FormularioDeInicio (StartupForm) es una expresión de cadena que es el nombre de un formulario en la base de datos activa.

La forma más fácil de establecer esta propiedad es usando la opción Mostrar el formulario en el cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. También puede establecer esta propiedad usando una macro o Visual Basic.

Para establecer la propiedad FormularioDeInicio (StartupForm) usando una macro o Visual Basic, primero debe establecer la propiedad en el cuadro de diálogo Inicio una vez o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

La propiedad FormularioDeInicio (StartupForm) es preferible frente a la acción AbrirFormulario de la macro AutoExec. Dado que Microsoft Access ejecuta la macro AutoExec tras evaluar las propiedades de inicio, la aplicación no debe utilizar la acción AbrirFormulario en su macro AutoExec si establece la propiedad FormularioDeInicio (StartupForm).

Si esta propiedad está en blanco, se utiliza la configuración de base de datos predeterminada de Microsoft Access (se abre la ventana Base de datos).

Los valores de esta propiedad no son efectivos hasta la próxima vez que se abre la base de datos de la aplicación.


Ejemplo de las propiedades de Inicio

El siguiente ejemplo muestra un procedimiento llamado EstablecerPropiedadesDeInicio que pasa el nombre de la propiedad a establecer, su tipo de datos y los valores que se deseen. El procedimiento de propósito general CambiarPropiedad intenta establecer la propiedad de inicio y, si no se encuentra la propiedad, usa el método CreateProperty para anexarla a la colección Properties del objeto Database. Esto es necesario porque estas propiedades no aparecen en la colección Properties hasta que han sido establecidas o cambiadas al menos una vez.

Sub EstablecerPropiedadesDeInicio()

CambiarPropiedad "StartupForm", dbText, "Clientes"

CambiarPropiedad "StartupShowDBWindow", dbBoolean, False

CambiarPropiedad "StartupShowStatusBar", dbBoolean, False

CambiarPropiedad "AllowBuiltinToolbars", dbBoolean, False

CambiarPropiedad "AllowFullMenus", dbBoolean, True

CambiarPropiedad "AllowBreakIntoCode", dbBoolean, False

CambiarPropiedad "AllowSpecialKeys", dbBoolean, True

CambiarPropiedad "AllowBypassKey", dbBoolean, True

End Sub

Function CambiarPropiedad(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer

Dim dbs As Database, prp As Property

Const conPropNotFoundError = 3270

Set dbs = CurrentDb

On Error GoTo Change_Err

dbs.Properties(strPropName) = varPropValue

CambiarPropiedad = True

Change_Bye:

Exit Function

Change_Err:

If Err = conPropNotFoundError Then	' Propiedad no encontrada.

Set prp = dbs.CreateProperty(strPropName, _

varPropType, varPropValue)

dbs.Properties.Append prp

Resume Next

Else

' Error desconocido.

CambiarPropiedad = False

Resume Change_Bye

End If

End Function


Propiedad BarraDeMenúsDeInicio (StartupMenuBar)

La propiedad BarraDeMenúsDeInicio (StartupMenuBar) se utiliza para especificar la barra de menús personalizada a usar como barra de menús general para la aplicación. Por ejemplo, puede usar la propiedad BarraDeMenúsDeInicio (StartupMenuBar) para mostrar una barra de menús personalizada que no contenga el menú Seguridad. Esto evita que un usuario tenga que tener acceso a cualquiera de los comandos del menú Seguridad desde la barra de menús. También puede especificar una macro de barra de menús que muestre la barra de menús personalizada que desea usar como la barra de menús general.

Valores

La propiedad BarraDeMenúsDeInicio (StartupMenuBar) es una expresión de cadena que es el nombre de una barra de menús personalizada o una macro de barra de menús de la base de datos activa.

La forma más fácil de establecer esta propiedad es usando la opción Barra de menús del cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad BarraDeMenúsDeInicio (StartupMenuBar) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

Si establece la propiedad BarraDeMenúsDeInicio (StartupMenuBar) no debe usar la acción EstablecerValor en la macro AutoExec para establecer la propiedad BarraDeMenús (MenuBar) para el objeto Application. Dado que Microsoft Access ejecuta la macro AutoExec después de evaluar las propiedades de inicio, la barra de menús global establecida en la macro AutoExec sustituirá la barra de menús establecida por la propiedad BarraDeMenúsDeInicio (StartupMenuBar).

También puede crear barras de menús personalizadas utilizando la propiedad BarraDeMenús (MenuBar) para formularios e informes. Estas barras de menús personalizadas se presentan cuando se abre un determinado formulario o informe, y substituyen en estos casos a la barra de menús general.

Si la propiedad BarraDeMenúsDeInicio (StartupMenuBar) está en blanco (que lo está de forma predeterminada), Microsoft Access presenta la barra de menús incorporada. Si esta propiedad se establece al nombre de una barra de menús personalizada, entonces el valor de la propiedad PermitirMenúsCompletos (AllowFullMenus) no tiene efecto (los menús completos incorporados son reemplazados por la barra de menús general).

Establecer esta propiedad tiene el mismo efecto que establecer la propiedad BarraDeMenús (MenuBar) del objeto Application (excepto que los valores de la propiedad BarraDeMenús (MenuBar) entran en efecto de inmediato).

Si la casilla de verificación Usar las teclas especiales de Access del cuadro de diálogo Inicio está seleccionada, o si la propiedad PermitirTeclasEspeciales (AllowSpecialKeys) está establecida a True (–1), los usuario todavía pueden seguir presionando CTRL+F11 para alternar entre la barra de menús general y la barra de menús incorporada.

Los valores de esta propiedad no son efectivos hasta la siguiente vez que se abre la base de datos de la aplicación.


Propiedad BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar)

La propiedad BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar) se utiliza para especificar un menú contextual personalizado para usarlo como el menú contextual general para la aplicación. También se puede especificar una macro de barra de menús que muestre el menú contextual personalizado a usar como el menú contextual general.

Valores

La propiedad BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar) es una expresión de cadena que es el nombre de un menú contextual personalizado o una macro de barra de menús que muestra un menú contextual personalizado.

La forma más fácil de establecer esta propiedad es usando la opción Barra de menú contextuales del cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

Si establece la propiedad BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar), no debe usar una acción EstablecerValor en la macro AutoExec para establecer la propiedad BarraDeMenúsDeMétodoAbreviado (ShortcutMenuBar) para el objeto Application. Dado que Microsoft Access ejecuta la macro AutoExec después de analizar las propiedades de inicio, el menú contextual general establecido en la macro AutoExec reemplazaría al menú contextual establecido en la propiedad BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar).

También se pueden crear menús contextuales personalizados usando la propiedad BarraDeMenúsContextuales (ShortcutMenuBar) para los formularios, informes y controles de los formularios. Estos menús contextuales personalizados se muestran cuando se hace clic con el botón secundario en un formulario, informe o control de formulario determinado y en estos casos reemplazan al menú contextual general.

Si esta propiedad está en blanco, Microsoft Access muestra los menús contextuales incorporados.

Establecer esta propiedad tiene el mismo efecto que establecer la propiedad BarraDeMenúsContextuales (ShortcutMenuBar) del objeto Application (excepto que los valores de la propiedad BarraDeMenúsContextuales (ShortcutMenuBar) entran en efecto inmediatamente).

Los valores de esta propiedad no surten efecto hasta la próxima vez que se abre la base de datos de la aplicación.


Propiedad MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow)

La propiedad MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow) se utiliza para especificar si se presenta o no la ventana Base de datos cuando abre la base de datos de la aplicación. Por ejemplo, puede abrir un formulario principal cuando se abre la base de datos de la aplicación y ocultar la ventana Base de datos.

Valores

La propiedad MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Presenta la ventana Base de datos en el inicio.
False (0)	No presenta la ventana Base de datos en el inicio.
La forma más fácil de establecer esta propiedad es usando la opción Presentar la ventana Base de datos en el cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

La propiedad MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow) se puede establecer a False para ocultar la ventana Base de datos, de tal forma que el usuario no pueda ver las tablas, consultas, macros y módulos de la base de datos.

Si la casilla de verificación Usar las teclas especiales de Access del cuadro de diálogo Inicio está seleccionada, o si la propiedad PermitirTeclasEspeciales (AllowSpecialKeys) está establecida a True, los usuarios pueden todavía presionar la tecla F11 para mostrar la ventana Base de datos.

Incluso si estableciera las dos propiedades MostrarVentanaBaseDeDatosAlIniciar (StartupShowDBWindow) y PermitirTeclasEspeciales (AllowSpecialKeys) a False, es posible que un usuario todavía pueda tener acceso a la ventana Base de datos. Esto puede ocurrir si un usuario intenta abrir la misma base de datos más de una vez desde la lista de las bases de datos usadas más recientemente, que aparece automáticamente en el menú Archivo. Para evitar que los usuarios tengan acceso a esta lista, reemplace el menú Archivo con su propio menú personalizado.

Los valores de esta propiedad no son efectivos hasta la próxima vez que se abre la base de datos de la aplicación.


Propiedad MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar)

La propiedad MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar) se utiliza para especificar si debe aparecer o no la barra de estado cuando se abre la base de datos de la aplicación. Por ejemplo, puede usar la propiedad MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar) para evitar que se presente la barra de estado si no desea presentar mensajes de estado en la aplicación.

Valores

La propiedad MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Muestra la barra de estado en el inicio.
False (0)	No muestra la barra de estado en el inicio.
La forma más fácil de establecer esta propiedad es usando la opción Presentar la barra de estado en el cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

El establecimiento de esta propiedad sólo afecta a la presentación de la barra de estado para la base de datos activa. También puede controlar si la barra de estado se muestra o se oculta de forma predeterminada para todas las bases de datos de Microsoft Access. Para hacer esto, haga clic en Opciones en el menú Herramientas, haga clic en la ficha Ver, y luego seleccione o borre la casilla de verificación Barra de estado bajo Mostrar. La base de datos activa no mostrará una barra de estado si alguna condición de las siguientes se cumple: la casilla de verificación Barra de estado del cuadro de diálogo Opciones está desactivada; la casilla de verificación Mostrar barra de estado del cuadro de diálogo Inicio está desactivada; o la propiedad MostrarBarraDeEstadoAlIniciar (StartupShowStatusBar) está establecida a False.

Los valores de esta propiedad no son efectivos hasta la próxima vez que se abre la base de datos de la aplicación.


Propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars)

La propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) se utiliza para especificar si el usuario puede o no presentar las barras de herramientas incorporadas de Microsoft Access. Por ejemplo, puede utilizar la propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) para evitar que un usuario vea una barra de herramientas incorporada de Microsoft Access en una aplicación de base de datos.

Valores

La propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Permitir que se presenten las barras de herramientas incorporadas.
False (0)	No permitir que se presenten las barras de herramientas incorporadas.
La forma más fácil de establecer esta propiedad es usando la opción Permitir el uso de las barras de herramientas incorporadas del cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

Se pueden mostrar u ocultar barras de herramientas determinadas usando el cuadro de diálogo Personalizar disponible, seleccionando Barras de herramientas en el menú Ver y haciendo clic en Personalizar.

Si hace clic en Barras de herramientas en el menú Ver cuando la propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) está establecida a False, Microsoft Access mostrará sólo las barras de herramientas personalizadas en el submenú Barras de herramientas. Si hace clic en Personalizar en este submenú, el cuadro de diálogo Personalizar muestra las barras de herramientas incorporadas, pero no puede seleccionarlas o personalizarlas.

El usuario puede modificar las barras de herramientas incorporadas sólo cuando la propiedad PermitirCambiosDeBarrasDeHerramientas (AllowToolbarChanges) esté establecida a True y la propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) esté establecida a True.

Si la propiedad PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) está establecida a False, no se puede usar la acción MostrarBarraDeHerramientas para mostrar una barra de herramientas incorporada.

Los valores de esta propiedad no son efectivos hasta la próxima vez que se abre la base de datos de la aplicación.


Propiedad PermitirMenúsCompletos (AllowFullMenus)

La propiedad PermitirMenúsCompletos (AllowFullMenus) se utiliza para especificar si se permite o no el uso no restringido de los menús incorporados de Microsoft Access cuando se abre la base de datos de la aplicación. Por ejemplo, puede utilizar la propiedad PermitirMenúsCompletos (AllowFullMenus) para desactivar el uso de elementos de menú que dan acceso al usuario para modificar tablas, formularios, consultas, o estructuras de informes.

Valores

La propiedad PermitirMenúsCompletos (AllowFullMenus) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Presenta los menús incorporados completos en el inicio.
False (0)	No presenta los menús incorporados completos en el inicio.
La forma más fácil de establecer esta propiedad es utilizando la opción Permitir el uso de menús no restringidos del cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad PermitirMenúsCompletos (AllowFullMenus) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

Si esta propiedad se establece a False, en la base de datos se mostrará un subconjunto predefinido de los menús completos incorporados. Este conjunto de menús no incluye los menús y comandos que permiten a los usuarios cambiar el diseño de los objetos de bases de datos.

Estableciendo esta propiedad a False desactiva también los botones de la barra de herramientas que corresponden a los elementos de menú desactivados. Sin embargo, los menús contextuales no se ven afectados (todavía se pueden cambiar algunas características de diseño usando los comandos de los menús contextuales). Si no desea que los usuarios tengan acceso a los comandos de los menús contextuales, puede establecer la propiedad PermitirMenúsContextuales (AllowShortcutMenus) a False.

Los valores de esta propiedad no son efectivos hasta la próxima vez que se abra la base de datos.


Propiedad PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges)

La propiedad PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges) se utiliza para especificar si la base de datos permite a los usuarios personalizar las barras de herramientas, las barras de menús, y los menús contextuales. Por ejemplo, puede usar la propiedad PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges) para evitar que los usuarios eliminen un botón de la barra de herramientas o toda una barra de herramientas de la aplicación.

Valores

La propiedad PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Permitir cambios en las barras de herramientas, barras de menús y menús contextuales.
False (0)	No permitir cambios en las barras de herramientas, barras de menús y menús contextuales.
La forma más fácil de establecer esta propiedad es utilizando la opción Permitir cambios de barras de herramientas y menús en el cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

Al establecer la propiedad PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges) a False se evita que los usuarios modifiquen cualquier barra de herramientas, barra de menús, y menús contextuales. Esto desactiva el subcomando Personalizar del comando Barras de herramientas del menú Ver y el comando Personalizar que se muestra cuando se hace clic con el botón secundario en una barra de herramientas o en la barra de menús.

Si esta propiedad se establece a False, el usuario todavía puede mover, cambiar el tamaño y acoplar las barras de herramientas y las barras de menús.

El usuario puede modificar las barras de herramientas incorporadas sólo cuando las propiedades PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges) y PermitirBarrasDeHerramientasIncorporadas (AllowBuiltInToolbars) tengan ambas el valor True.

Los valores de esta propiedad no son efectivos hasta la siguiente vez que se abra la base de datos.


Propiedad PermitirMenúsContextuales (AllowShortcutMenus)

La propiedad PermitirMenúsContextuales (AllowShortcutMenus) se utiliza para especificar si la aplicación permite o no que Microsoft Access muestre los menús contextuales incorporados. Por ejemplo, puede usar la propiedad PermitirMenúsContextuales (AllowShortcutMenus) junto con la propiedad PermitirMenúsCompletos (AllowFullMenus) en la aplicación para evitar que el usuario utilice cualquier barra de menús incorporada, barra de herramientas, o comandos de menú contextual que permiten a los usuarios cambiar el diseño de los objetos de bases de datos.

Valores

La propiedad PermitirMenúsContextuales (AllowShortcutMenus) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Permitir mostrar los menús contextuales incorporados de Microsoft Access.
False (0)	No permitir mostrar los menús contextuales incorporados de Microsoft Access.
La forma más fácil de establecer esta propiedad es utilizando la opción Permitir el uso de menús contextuales predeterminados en el cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad PermitirMenúsContextuales (AllowShortcutMenus) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

El valor de esta propiedad no afecta a los menús contextuales personalizados y a los menús contextuales generales. Puede usar la propiedad BarraDeMenúDeMétodoAbreviado (ShortcutMenuBar) para mostrar los menús contextuales personalizados para los formularios, controles de formulario e informes, y la propiedad BarraDeMenúsContextualesDeInicio (StartupShortcutMenuBar) o la propiedad BarraDeMenúsContextuales (ShortcutMenuBar) del objeto Application para mostrar un menú contextual general.

Si desea mostrar en la aplicación los menús contextuales incorporados, pero no desea que el usuario pueda cambiarlos, establezca la propiedad PermitirMenúsContextuales (AllowShortcutMenus) a True y establezca la propiedad PermitirCambiosEnBarrasDeHerramientas (AllowToolbarChanges) a False.

Los valores de esta propiedad no son efectivos hasta la siguiente vez que se abra la base de datos.


Propiedad PermitirVerCódigo (AllowBreakIntoCode)

La propiedad PermitirVerCódigo (AllowBreakIntoCode) se utiliza para especificar si el usuario puede ver o no el código de Visual Basic después de que se produzca en un módulo un error en tiempo de ejecución.

Valores

La propiedad PermitirVerCódigo (AllowBreakIntoCode) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Activar el botón Depurar en el cuadro de diálogo que aparece cuando se produce un error en tiempo de ejecución.
False (0)	Desactivar el botón Depurar.
La forma más fácil de establecer esta propiedad es utilizando la opción Permitir mostrar código después de un error en la sección Avanzado del cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad PermitirVerCódigo (AllowBreakIntoCode) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

Cuando depure una aplicación, debe asegurar que la propiedad PermitirVerCódigo (AllowBreakIntoCode) esté establecida a True.

Si la propiedad PermitirTeclasEspeciales (AllowSpecialKeys) está establecida a True, todavía puede presionar CTRL+BREAK para detener la ejecución del código de Visual Basic, incluso si la propiedad PermitirVerCódigo (AllowBreakIntoCode) está establecida a False.

Los valores de esta propiedad no son efectivos hasta la próxima vez que se abre la base de datos de la aplicación.


Propiedad PermitirTeclasEspeciales (AllowSpecialKeys)

La propiedad PermitirTeclasEspeciales (AllowSpecialKeys) se utiliza para especificar si las secuencias de teclas especiales (ALT+F1 (F11), CTRL+F11, CTRL+BREAK, y CTRL+G) están desactivas o activadas. Por ejemplo, puede usar la propiedad PermitirTeclasEspeciales (AllowSpecialKeys) para evitar que un usuario muestre la ventana Base de datos presionando F11, que entre en modo de interrupción dentro de un módulo de Visual Basic presionando CTRL+BREAK, o que presente la ventana Depuración utilizando CTRL+G.

Valores

La propiedad PermitirTeclasEspeciales (AllowSpecialKeys) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Activa las secuencias de teclas especiales.
False (0)	Desactiva las secuencias de teclas especiales.
La forma más fácil de establecer esta propiedad es utilizando la opción Usar las teclas especiales de Access en la sección Avanzadas del cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad PermitirTeclasEspeciales (AllowSpecialKeys) usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

Cuando depure una aplicación, debe asegurarse que la propiedad PermitirTeclasEspeciales (AllowSpecialKeys) está establecida a True.

La propiedad PermitirTeclasEspeciales (AllowSpecialKeys) afecta a las siguientes secuencias de teclas.

Secuencia de teclas	Efecto
ALT+F1 (F11)	Traer al frente la ventana Base de datos.
CTRL+G	Mostrar la ventana Depuración.
CTRL+F11	Alternar entre la barra de menús personalizada y la barra de menús incorporada.
CTRL+INTERRUMPIR	Entrar en modo de interrupción y mostrar el módulo activo en la ventana Módulo.
Si establece la propiedad UseSpecialKeys a False, y especifica una barra de menús general usando la propiedad BarraDeMenúsDeInicio  (StartupMenuBar) o la propiedad BarraDeMenús (MenuBar) del objeto Application, las barras de menús incorporadas no estarán accesibles.

Los valores de esta propiedad no son efectivos hasta la próxima vez que se abre la base de datos de la aplicación.


Propiedad PermitirIgnorarInicio (AllowBypassKey)

La propiedad PermitirIgnorarInicio (AllowBypassKey) se utiliza para especificar si la tecla MAYÚS está activada para saltar las propiedades de inicio y la macro AutoExec. Por ejemplo, puede establecer la propiedad PermitirIgnorarInicio (AllowBypassKey) a False para evitar que un usuario se salte las propiedades de inicio y la macro AutoExec.

Valores

La propiedad PermitirIgnorarInicio (AllowBypassKey) utiliza los siguientes valores.

Valores	Descripción
True (–1)	Activa la tecla MAYÚS para permitir que el usuario se salte las propiedades de inicio o la macro AutoExec.
False (0)	Desactiva la tecla MAYÚS para permitir que el usuario se salte las propiedades de inicio o la macro AutoExec.
Esta propiedad se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad PermitirIgnorarInicio (AllowBypassKey) usando una macro o Visual Basic, debe crear la propiedad usando método CreateProperty y anexarla a la colección Properties del objeto Database.

Comentarios

Cuando depure una aplicación, debe asegurase de que la propiedad PermitirIgnorarInicio (AllowBypassKey) está establecida a True.

Los valores de esta propiedad no son efectivos hasta la próxima vez que se abre la base de datos de la aplicación.


Propiedad AppIcon

La propiedad AppIcon se utiliza para especificar el nombre del archivo de mapa de bits (.bmp) o del archivo de icono (.ico) que contiene el icono de la aplicación. Por ejemplo, puede usar la propiedad AppIcon para especificar un archivo .bmp que contenga una imagen de un automóvil  para representar una aplicación de componentes para vehículos.

Valores

La propiedad AppIcon es una expresión de cadena que es un nombre de archivo válido de un mapa de bits o icono (incluyendo la ruta de acceso).

La forma más fácil de establecer esta propiedad es utilizando la opción Icono de la aplicación en el cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad AppIcon usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database. También debe usar el método RefreshTitleBar para hacer que los cambios sean visibles inmediatamente.

Comentarios

Si está distribuyendo la aplicación, se recomienda que el archivo .bmp o .ico que contenga el icono resida en el mismo directorio que la aplicación de Microsoft Access.

Si no se establece la propiedad AppIcon o no es válida, se muestra el icono de Microsoft Access.

El valor de esta propiedad tiene efecto inmediatamente tras ser establecida en el código (siempre que el código incluya el método RefreshTitleBar) o al cerrar el cuadro de dialogo Inicio.


Ejemplo de las propiedades AppIcon y AppTitle

El siguiente ejemplo muestra cómo cambiar las propiedades AppIcon y AppTitle. Si las propiedades no han sido establecidas o creadas todavía, debe crearlas y anexarlas al objeto Database usando el método CreateProperty.

Sub cmdAgregarProp_Click()

Dim intX As Integer

intX = AddAppProperty("AppTitle", dbText, "Mi aplicación personalizada")

intX = AddAppProperty("AppIcon", dbText, "C:\Windows\Cars.bmp")

RefreshTitleBar

End Sub

Function AgregarPropAp(strName As String, varType As Variant, varValue As Variant) As Integer

Dim dbs As Database, prp As Property

Const conPropNotFoundError = 3270

Set dbs = CurrentDb

On Error GoTo AddProp_Err

dbs.Properties(strName) = varValue

AddAppProperty = True

AddProp_Bye:

Exit Function

AddProp_Err:

If Err = conPropNotFoundError Then

Set prp = dbs.CreateProperty(strName, varType, varValue)

dbs.Properties.Append prp

Resume

Else

AddAppProperty = False

Resume AddProp_Bye

End If

End Function


Propiedad AppTitle

La propiedad AppTitle se utiliza para especificar el texto que aparece en la barra de título de la base de datos de la aplicación. Por ejemplo, puede utilizar la propiedad AppTitle para especificar que la cadena "Control de inventario" aparezca en su aplicación de base de datos Control de inventario.

Valores

La propiedad AppTitle es una expresión de cadena que contiene el texto que va a aparecer en la barra de título.

La forma más fácil de establecer esta propiedad es utilizando la opción Título de la aplicación en el cuadro de diálogo Inicio, disponible haciendo clic en Inicio en el menú Herramientas. Esta propiedad también se puede establecer usando una macro o Visual Basic.

Para establecer la propiedad AppTitle usando una macro o Visual Basic, primero debe establecer una vez la propiedad en el cuadro de diálogo Inicio o crear la propiedad usando el método CreateProperty y anexarla a la colección Properties del objeto Database. También debe usar el método RefreshTitleBar para hacer que los cambios sean visibles inmediatamente.

Comentarios

Si no se establece esta propiedad, la cadena "Microsoft Access" aparece en la barra de título.

El valor de esta propiedad tiene efecto inmediatamente después de ser establecida en el código (siempre que el código incluya el método RefreshTitleBar) o de cerrar el cuadro de diálogo Inicio.


Propiedades DatasheetBackColor y DatasheetForeColor

•	Puede utilizar la propiedad DatasheetBackColor en Visual Basic para especificar o determinar el color de fondo de toda una tabla, una consulta o un formulario en la vista Hoja de datos.

•	Puede utilizar la propiedad DatasheetForeColor en Visual Basic para especificar o determinar el color de todo el texto de una tabla, una consulta o un formulario en la vista Hoja de datos.

Valores

Las propiedades DatasheetBackColor y DatasheetForeColor contienen un valor Entero largo que representa el color de fondo y el color de fuente para una hoja de datos.

También puede establecer estas propiedades haciendo clic en Color de fondo o de relleno   [image]  o en Color de fuente o de primer plano  [image]  en la barra de herramientas Formato (Hoja de datos) y haciendo clic en el color deseado mostrado en la paleta de colores.

También puede establecer las propiedades DatasheetBackColor y DatasheetForeColor predeterminadas mediante la ficha Hoja de datos del cuadro de diálogo Opciones, disponible al elegir Opciones en el menú Herramientas.

Comentarios

Al establecer las propiedades DatasheetBackColor o DatasheetForeColor para una tabla o una consulta, los valores de estas propiedades para un formulario que utiliza la tabla o la consulta como fuente de datos no se ven afectados.

La lista siguiente contiene las propiedades que no existen en la colección Properties para los objetos TableDef o QueryDef hasta que se agregan mediante el método CreateProperty o se establecen mediante la barra de herramientas Formato (Hoja de datos).

DatasheetBackColor	FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)*
EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)	EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)*
AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)*	DatasheetForeColor*
FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic)*	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)
DatasheetFontName*	ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor)
Nota   Cuando se agrega o establece cualquiera de las propiedades marcadas con un asterisco, Microsoft Access la agrega automáticamente a la colección Properties.


Ejemplo de las propiedades DatasheetBackColor y DatasheetForeColor

El ejemplo siguiente utiliza el procedimiento EstablecerPropTabla para establecer el color de fuente de una tabla a azul marino y el color de fondo a plateado. Si se produce un error "Propiedad no encontrada" al establecer la propiedad, se utiliza el método CreateProperty para agregar la propiedad a la colección Properties del objeto.

Dim dbs As Database, tdfProductos As TableDef

Const lngColorFuente As Long = 8388608          ' Azul marino.

Const lngColorFondo As Long = 12632256          ' Plateado.

Set dbs = CurrentDb

Set tdfProductos = dbs!Productos

EstablecerPropTabla tdfProductos, "DatasheetBackColor", dbLong, lngColorFondo

EstablecerPropTabla tdfProductos, "DatasheetForeColor", dbLong, lngColorFuente

Sub EstablecerPropTabla(tdfObjTabla As TableDef, cadNombrePropiedad As String, _

entTipoProp As Integer, varValorProp As Variant)

Const conErrorPropNoEncontrada = 3270

Dim prpPropiedad As Property

On Error Resume Next          ' No interceptar los errores.

tdfObjTabla.Properties(cadNombrePropiedad) = varValorProp

If Err <> 0 Then              ' Se ha producido un error al establecer el valor.

If Err <> conErrorPropNoEncontrada Then

' El error es desconocido.

MsgBox "No se ha podido establecer la propiedad '" & cadNombrePropiedad _

& "' en la tabla '" & tdfObjTabla.Name & "'", vbExclamation, Err.Description

Err.Clear

Else

' El error es "Propiedad no encontrada", por tanto, agregarla a la colección.

Set prpPropiedad = tdfObjTabla.CreateProperty(cadNombrePropiedad, _

entTipoProp, varValorProp)

tdfObjTabla.Properties.Append prpPropiedad

Err.Clear

End If

End If

tdfObjTabla.Properties.Refresh

End Sub


Propiedad Finalizar al producirse un error (FailOnError)

Puede utilizar la propiedad Finalizar al producirse un error (FailOnError) para especificar si una consulta de actualización o una consulta de eliminación que se ejecuta sobre un origen de datos ODBC terminará si se produce un error. La propiedad Finalizar al producirse un error (FailOnError) permite optimizar las consultas de actualización de gran volumen realizadas a orígenes de datos ODBC que se ejecuten en el servidor si no se desea que se produzca el comportamiento de fallo parcial de la máquina de la base de datos Microsoft Jet.

Nota   La propiedad Finalizar al producirse un error (FailOnError) se aplica sólo a consultas de actualización y de eliminación.

Valores

La propiedad Finalizar al producirse un error (FailOnError) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	Los errores terminan la consulta.	True (–1)
No	(Predeterminado). Los errores no terminan la consulta.	False (0)
Puede establecer la propiedad Finalizar al producirse un error (FailOnError) mediante la hoja de propiedades de la consulta o Visual Basic. Para establecer esta propiedad con Visual Basic, primero debe agregarla a la colección Properties de un objeto QueryDef utilizando el método CreateProperty.

Comentarios

Cuando la propiedad Finalizar al producirse un error (FailOnError) está establecida a Sí y la consulta se ejecuta en una sola tabla de una base de datos ODBC y no contiene expresiones que no pueden evaluarse en el servidor, la consulta se envía al servidor para su ejecución. Cuando la propiedad Finalizar al producirse un error (FailOnError) se ha establecido a Sí, si se produce un error durante una eliminación o una actualización, la ejecución de la consulta se detiene y la tabla es devuelta a su estado original. En todos los demás casos, la propiedad Finalizar al producirse un error (FailOnError) se trata como si estuviera establecida a No. Cuando la propiedad Finalizar al producirse un error (FailOnError) está establecida a No y se produce un error, puede aceptar el resultado de la consulta o deshacer los cambios.

Cuando la propiedad Finalizar al producirse un error (FailOnError) está establecida a No y la consulta se ejecuta con los datos locales, las consultas de actualización o eliminación funcionan igual que lo hacían en versiones anteriores de Microsoft Access; cuando la consulta afecta a muchas filas, algunas filas pueden actualizarse y otras pueden fallar debido a errores. Si se produce un error, se le notificará la razón del error y el número de registros afectados, y podrá aceptar el resultado de la consulta o deshacer los cambios.

El establecimiento de esta propiedad a Sí es equivalente a utilizar la constante intrínseca dbFailOnError del método Execute de DAO.


Propiedad TieneUnMóduloAsociado (HasModule)

Puede utilizar la propiedad TieneUnMóduloAsociado (HasModule) para especificar o determinar si un formulario o un informe tiene un módulo de clase. El establecimiento de esta propiedad a No puede mejorar el rendimiento y reducir el tamaño de la base de datos.

Valores

La propiedad TieneUnMóduloAsociado (HasModule) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	El formulario o el informe tiene un módulo de clase.	True (–1)
No	(Predeterminado). El formulario o el informe no tiene un módulo de clase.	False (0)
Puede establecer la propiedad TieneUnMóduloAsociado (HasModule) mediante la hoja de propiedades del formulario o el informe, una macro o Visual Basic.

La propiedad TieneUnMóduloAsociado (HasModule) puede establecerse sólo en la vista Diseño del informe o del formulario, pero puede leerse en cualquier vista.

Comentarios

Los formularios o informes que tienen la propiedad TieneUnMóduloAsociado (HasModule) establecida a No se consideran objetos sin código. Los objetos sin código son más pequeños y normalmente se cargan y muestran más rápido que los objetos con módulos de clase asociados. En muchos casos, un formulario o un informe no necesita utilizar procedimientos de evento y no requiere un módulo de clase.

Si la aplicación utiliza un formulario de panel de control para desplazarse a otros formularios, en lugar de utilizar botones de comando con los procedimientos de evento, puede utilizar un botón de comando con una macro o un hipervínculo. Por ejemplo, para abrir el formulario Empleados desde un botón de comando de un panel de control, puede establecer la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) del control a "Formulario Empleados".

Los objetos sin código no aparecen en el Examinador de objetos y no puede utilizar la palabra clave New para crear una nueva instancia del objeto. Un formulario o un informe sencillo puede utilizarse como un subformulario o un subinforme y aparece en la colección Formularios (Forms) o Informes (Reports). Los objetos sin código admiten el uso de las macros y los procedimientos públicos que existen en los módulos estándar cuando se llaman desde la hoja de propiedades del objeto.

Microsoft Access establece la propiedad TieneUnMóduloAsociado (HasModule) a True en cuanto intenta ver el módulo de un objeto, incluso aunque no se agregue ningún código al módulo. Por ejemplo, al elegir Código en el menú Ver de un formulario en la vista Diseño, Microsoft Access agrega un módulo de clase al objeto Formulario (Form) y establece su propiedad TieneUnMóduloAsociado (HasModule) a True. Puede agregar un módulo de clase a un objeto del mismo modo estableciendo la propiedad TieneUnMóduloAsociado (HasModule) a Sí en la hoja de propiedades de un objeto.

Advertencia   Si establece la propiedad TieneUnMóduloAsociado (HasModule) a No mediante la hoja de propiedades de un objeto o la establece a False mediante Visual Basic, Microsoft Access elimina el módulo de clase del objeto y cualquier código que pueda contener.

Cuando se utiliza un método del objeto Module o se hace referencia a la propiedad Module de un formulario o un informe en la vista Diseño, Microsoft Access crea el módulo asociado y establece la propiedad TieneUnMóduloAsociado (HasModule) del objeto a True. Si se refiere a la propiedad Module de un formulario o informe en tiempo de ejecución y el objeto tiene su propiedad TieneUnMóduloAsociado (HasModule) establecida a False, se producirá un error.

Los objetos creados mediante las funciones CreateForm o CreateReport son objetos sin código de forma predeterminada.


Propiedad Hyperlink

Puede utilizar la propiedad Hyperlink para devolver una referencia a un objeto de hipervínculo, así como para tener acceso a las propiedades y los métodos de un objeto de Hyperlink asociado a un control.

Valores

La propiedad Hyperlink está disponible sólo mediante Visual Basic.


Ejemplo de la propiedad Hyperlink

El procedimiento CrearHipervínculo del ejemplo siguiente establece las propiedades de hipervínculo para un botón de comando, una etiqueta o un control de imagen a los valores de dirección y subdirección pasados al procedimiento. El valor de la dirección es un argumento opcional, porque un hipervínculo a un objeto de la base de datos actual utiliza sólo el valor de la subdirección. Para probar este ejemplo, cree un formulario con dos controles de cuadro de texto (txtDirección y txtSubDirección) y un botón de comando (cmdSeguirVínculo) y péguelos en la sección Declaraciones del módulo del formulario:

Private Sub cmdSeguirVínculo_Click()

CrearHipervínculo Me!cmdSeguirVínculo, Me!txtSubDirección, Me!txtDirección

End Sub

Sub CrearHipervínculo(ctlSeleccionado As Control, cadSubDirección As String, Optional cadDirección As String)

Dim hlk As Hyperlink

Select Case ctlSeleccionado.ControlType

Case acLabel, acImage, acCommandButton

Set hlk = ctlSeleccionado.Hyperlink

With hlk

If Not IsMissing(cadDirección) Then

.Address = cadDirección

Else

.Address = ""

End If

.SubAddress = cadSubDirección

.Follow

.Address = ""

.SubAddress = ""

End With

Case Else

MsgBox "El control '" & ctlSeleccionado.Name & "' no admite hipervínculos."

End Select

End Sub


Propiedad DirecciónDeHipervínculo (HyperlinkAddress)

Puede utilizar la propiedad DirecciónDeHipervínculo (HyperlinkAddress) para especificar o determinar la ruta de acceso de un objeto, documento, página web u otro destino para un control de botón de comando, control de imagen o etiqueta.

Valores

La propiedad DirecciónDeHipervínculo (HyperlinkAddress) es una expresión de cadena que representa la ruta de acceso de un archivo (ruta UNC) o página web (dirección URL).

Puede establecer la propiedad DirecciónDeHipervínculo (HyperlinkAddress) mediante la hoja de propiedades del control, una macro o Visual Basic.

También puede utilizar el cuadro de diálogo Insertar hipervínculo para establecer esta propiedad haciendo clic en el botón Generar  [image]  situado a la derecha del cuadro de la propiedad en la hoja de propiedades.

Nota   Al crear un hipervínculo mediante el cuadro de diálogo Insertar hipervínculo, Microsoft Access establece automáticamente la propiedad DirecciónDeHipervínculo (HyperlinkAddress) a la ubicación especificada en el cuadro Vincular al archivo o dirección URL. La propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) se establece a la ubicación especificada en el cuadro Ubicación dentro del archivo.

Si copia un hipervínculo de otra aplicación y lo pega en un formulario o informe, Microsoft Access crea un control de etiqueta y establece automáticamente su título, la propiedad DirecciónDeHipervínculo (HyperlinkAddress) y la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress).

Comentarios

Al situar el cursor sobre un botón de comando, un control de imagen o un control de etiqueta cuya propiedad DirecciónDeHipervínculo (HyperlinkAddress) está establecida, el cursor cambia a una mano que apunta hacia arriba. Al hacer clic en el control, se muestra el objeto o la página web especificada por el vínculo.

Para abrir los objetos de la base de datos actual, deje la propiedad DirecciónDeHipervínculo (HyperlinkAddress) en blanco y especifique el tipo de objeto y el nombre del objeto que desea abrir en la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) mediante la sintaxis "tipodeobjeto nombredeobjeto". Si desea abrir un objeto contenido en otra base de datos de Microsoft Access, introduzca el nombre de archivo y la ruta de acceso de la base de datos en la propiedad DirecciónDeHipervínculo (HyperlinkAddress) y especifique el objeto de la base de datos mediante la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress).

La propiedad DirecciónDeHipervínculo (HyperlinkAddress) puede contener una ruta de acceso absoluta o relativa a un documento de destino. Una ruta de acceso absoluta es una ruta de acceso completa de dirección URL o UNC. Una ruta de acceso relativa es una ruta de acceso relacionada con la ruta de acceso base especificada en el valor de Base del hipervínculo en el cuadro de diálogo Propiedades de NombreDeBaseDeDatos (disponible al elegir Propiedades de la base de datos en el menú Archivo) o con la ruta de acceso de la base de datos actual. Si Microsoft Access no puede convertir el valor de la propiedad DirecciónDeHipervínculo (HyperlinkAddress) a una ruta de acceso de dirección URL o UNC válida, asumirá que ha especificado una ruta de acceso relativa a la ruta de acceso base contenida en el valor de Base del hipervínculo o a la ruta de acceso de la base de datos actual.

Nota   Cuando se visita un hipervínculo a otro objeto de base de datos de Microsoft Access, se aplican las propiedades de Inicio de la base de datos. Por ejemplo, si la base de datos de destino tiene establecido un valor en mostrar el Formulario, ese formulario se muestra cuando se abre la base de datos.

La tabla siguiente contiene ejemplos de los valores de las propiedades DirecciónDeHipervínculo (HyperlinkAddress) y SubdirecciónDeHipervínculo (HyperlinkSubAddress).

DirecciónDeHipervínculo (HyperlinkAddress)	SubdirecciónDeHipervínculo (HyperlinkSubAddress)	Descripción
http://www.microsoft.com/		La página principal de Microsoft en el Web.
C:\Archivos de programa\Microsoft Office\Office\Ejemplos\Cajun.htm		La página de Cajun Delights en el subdirectorio de aplicaciones de ejemplo de Access.
C:\ Archivos de programa\Microsoft Office\Office\Ejemplos\Cajun.htm	NuevosProductos	La etiqueta de Nombre "NuevosProductos" de la página de Cajun Delights.
C:\Personal\MiCV.doc	Referencias	El marcador denominado "Referencias" del documento de Microsoft Word "MiCV.doc".
C:\Finanzas\Primer Trimestre.xls	Hoja1!VentasTotales	El intervalo denominado "VentasTotales" de la hoja de cálculo de Microsoft Excel "Primer Trimestre.xls".
C:\Presentación\NuevosPlanes.ppt	10	La décima diapositiva del documento de Microsoft PowerPoint "NuevosPlanes.ppt".


Propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress)

Puede utilizar la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) para especificar o determinar una ubicación dentro del documento de destino especificado por la propiedad DirecciónDeHipervínculo (HyperlinkAddress). La propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) puede ser un objeto de una base de datos de Microsoft Access, un marcador de posición de un documento de Microsoft Word, un intervalo con nombre de una hoja de cálculo de Microsoft Excel, una diapositiva de una presentación de Microsoft PowerPoint o una ubicación de un documento HTML.

Valores

La propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) es una expresión de cadena que representa una ubicación con nombre dentro del documento de destino especificado por la propiedad DirecciónDeHipervínculo (HyperlinkAddress).

Puede establecer la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) mediante la hoja de propiedades de un control, una macro o Visual Basic.

También puede utilizar el cuadro de diálogo Insertar hipervínculo para establecer esta propiedad haciendo clic en el botón Generar  [image]  situado a la derecha del cuadro de la propiedad en la hoja de propiedades.

Nota   Al crear un hipervínculo mediante el cuadro de diálogo Insertar hipervínculo, Microsoft Access establece automáticamente la propiedad DirecciónDeHipervínculo (HyperlinkAddress) a la ubicación especificada en el cuadro Vincular al archivo o dirección URL. La propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) se establece a la ubicación especificada en el cuadro Ubicación dentro del archivo.

Comentarios

Al situar el cursor sobre un botón de comando, un control de imagen o un control de etiqueta cuya propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) esté establecida, el cursor cambia a una mano que apunta hacia arriba. Al hacer clic en el control se muestra el objeto o la página Web especificada por el vínculo.

Para abrir los objetos de la base de datos actual, deje la propiedad DirecciónDeHipervínculo (HyperlinkAddress) en blanco y especifique el tipo de objeto y el nombre del objeto que desea abrir en la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) con el formato "tipodeobjeto nombredeobjeto". Por ejemplo, para crear un hipervínculo para un botón de comando que abre el formulario Empleados, puede establecer la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress) del control a "Formulario Empleados". Si desea abrir un objeto contenido en otra base de datos de Microsoft Access, introduzca el nombre de archivo y la ruta de acceso de la base de datos en la propiedad DirecciónDeHipervínculo (HyperlinkAddress) y especifique el objeto de la base de datos que desea abrir mediante la propiedad SubdirecciónDeHipervínculo (HyperlinkSubAddress).

Nota   Cuando se visita un hipervínculo a otro objeto de base de datos de Microsoft Access, se aplican las propiedades de Inicio de la base de datos. Por ejemplo, si la base de datos de destino tiene establecido un valor en Mostrar el formulario, ese formulario se muestra cuando se abre la base de datos.

La tabla siguiente contiene ejemplos de los valores de las propiedades DirecciónDeHipervínculo (HyperlinkAddress) y SubdirecciónDeHipervínculo (HyperlinkSubAddress).

DirecciónDeHipervínculo (HyperlinkAddress)	SubdirecciónDeHipervínculo (HyperlinkSubAddress)	Descripción
http://www.microsoft.com/		La página principal de Microsoft en el Web.
C:\Archivos de programa\Microsoft Office\Office\Ejemplos\Cajun.htm		La página de Cajun Delights en el subdirectorio de aplicaciones de ejemplo de Access.
C:\ Archivos de programa\Microsoft Office\Office\Ejemplos\Cajun.htm	ProductosNuevos	La etiqueta de Nombre "ProductosNuevos" de la página de Cajun Delights.
C:\Personal\MiCV.doc	Referencias	El marcador denominado "Referencias" del documento de Microsoft Word "MiCV.doc".
C:\Finanzas\Primer Trimestre.xls	Hoja1!VentasTotales	El intervalo denominado "VentasTotales" de la hoja de cálculo de Microsoft Excel "Primer Trimestre.xls".
C:\Presentación\NuevosPlanes.ppt	10	La décima diapositiva del documento de Microsoft PowerPoint "NuevosPlanes.ppt".


Propiedad IsVisible

Puede utilizar la propiedad IsVisible en Visual Basic para determinar si un control de un informe está visible.

Valores

La propiedad IsVisible puede tener los valores siguientes.

Valor	Descripción
True (–1)	(Predeterminado) El control está visible.
False (0)	El control no está visible.
Puede establecer la propiedad IsVisible sólo en el evento Print de una sección de un informe que contiene el control.

Comentarios

Puede utilizar la propiedad IsVisible junto con la propiedad OcultarDuplicados (HideDuplicates) para determinar cuándo un control de un informe está visible y se muestran u ocultan otros controles en consecuencia. Por ejemplo, puede ocultar un control línea cuando un control de cuadro de texto está oculto porque contiene valores duplicados.


Ejemplo de la propiedad IsVisible

El ejemplo siguiente utiliza la propiedad IsVisible de un cuadro de texto para controlar la visualización de un control línea en un informe. El informe está basado en una tabla Productos y utiliza tres controles con las siguientes propiedades.

Propiedades	Control línea	Cuadro de edición nº 1	Cuadro de edición nº 2
Nombre (Name)	Línea0	IDCategoría	NombreProducto
OrigenDelControl (ControlSource)		IDCategoría	NombreProducto
OcultarDuplicados (HideDuplicates)		Sí	No
Izquierda (Left)	0	0	2.0
Superior (Top)	0	0,1	0,1
Anchura (Width)	4,0	1,0	1,0
Pegue el código siguiente en la sección Declaraciones del módulo del informe y, a continuación, muestre el informe para ver el formato de línea controlado por la propiedad IsVisible:

Private Sub Detalle_Print(Cancel As Integer, PrintCount As Integer)

If Me!IDCategoría.IsVisible Then

Me!Línea0.Visible = True

Else

Me!Línea0.Visible = False

End If

End Sub


Propiedad Número máximo de registros (MaxRecords) (Microsoft Access)
Propiedad Número máximo de registros (MaxRecords)

Puede utilizar la propiedad Número máximo de registros (MaxRecords) para determinar o especificar el número máximo de registros que serán retornados por una consulta que retorna datos de una base de datos ODBC.

Valores

El valor de la propiedad Número máximo de registros (MaxRecords) es un valor Entero largo que representa el número de registros que se retornarán.

Puede establecer esta propiedad mediante la hoja de propiedades de la consulta o Visual Basic.

Al establecer esta propiedad en Visual Basic, se utiliza la propiedad Número máximo de registros (MaxRecords) de DAO.

Comentarios

Los registros se devuelven en el orden especificado por la cláusula ORDER BY de la consulta.

Puede utilizar la propiedad Número máximo de registros (MaxRecords) en situaciones en las que los recursos del sistema limitados pueden impedir que se devuelva un gran número de registros.


Propiedad MDE

Puede utilizar la propiedad MDE para determinar si una base de datos se ha guardado como un archivo .mde.

Valores

Cuando una base de datos se guarda como un archivo .mde, Microsoft Access agrega la propiedad MDE a la base de datos y la establece al valor de tipo String "T".

La propiedad MDE puede determinarse exclusivamente mediante Visual Basic y es de sólo lectura en todas las vistas.

Importante   Si intenta determinar la propiedad MDE para una base de datos que no se ha guardado como un archivo .mde, se genera un error en tiempo de ejecución 3270 (propiedad no encontrada). La propiedad MDE no existe en una base de datos hasta que la base de datos se guarda como un archivo .mde.

Comentarios

Puede convertir una base de datos a un archivo .mde; para ello, elija Utilidades de la base de datos en el menú Herramientas y haga clic en Crear archivo MDE. Al guardar una base de datos como un archivo .mde, Microsoft Access quita todo el código editable, compila todos los módulos y compacta la base de datos. El código de Visual Basic sigue funcionando, pero no puede verse ni cambiarse. Además, no puede agregar ni realizar cambios en los objetos de formulario o informe.

Advertencia   Asegúrese de mantener una copia de su base de datos original. Si necesita cambiar código o el diseño de los objetos en una base de datos .mde, debe hacerlo en la base de datos original y crear después una nueva base de datos .mde. También necesitará la base de datos original para convertirla a versiones futuras de Microsoft Access porque no puede convertir directamente archivos .mde.

El almacenamiento de una base de datos como un archivo .mde es muy conveniente cuando se desea impedir que se realicen cambios en formularios o informes o cuando desea ocultar el código de Visual Basic de los usuarios de la base de datos. También puede convertir una base de datos en un archivo .mde al crear sus propios asistentes o para la parte de cliente de una aplicación cliente/servidor.

Una base de datos replicada no puede guardarse como un archivo .mde; no obstante, una vez que una base de datos se guarda como un archivo .mde, puede replicarse.


Ejemplo de la propiedad MDE

El ejemplo siguiente utiliza la función EsMDE para comprobar la propiedad MDE de la base de datos actual:

Dim dbs As Database

Set dbs = CurrentDb

If EsMDE(dbs) <> True Then

' Procesar código de base de datos personalizado.

End If

Function EsMDE(dbs as Database) As Boolean

Dim cadMDE As String

On Error Resume Next

cadMDE = dbs.Properties("MDE")

If Err = 0 AND cadMDE = "T" Then

' Ésta es una base de datos MDE.

EsMDE = True

Else

EsMDE = False

End if

End Function


Propiedad MousePointer

Puede utilizar la propiedad MousePointer junto con el objeto Pantalla (Screen) para especificar o determinar el tipo de puntero del mouse (ratón) mostrado actualmente.

Valores

El valor de la propiedad MousePointer es un valor Entero que representa uno de los siguientes punteros.

Valor	Descripción
0	(Predeterminado) La forma está determinada por Microsoft Access
1	Selección normal (Flecha)
3	Selección de texto (Cursor en I)
7	Cambiar el tamaño vertical (Tamaño N, S)
9	Cambiar el tamaño horizontal (Tamaño E, O)
11	Ocupado (Reloj de arena)
Nota   Al establecer la propiedad MousePointer a un valor entero distinto del que aparece en la tabla anterior, la propiedad se establece a 0.

Puede establecer la propiedad MousePointer sólo mediante Visual Basic.

Comentarios

La propiedad MousePointer afecta a la apariencia del puntero del mouse en toda la pantalla. Algunos controles personalizados tienen una propiedad MousePointer que, si se establece, especifica cómo se muestra el puntero del mouse en pantalla cuando está situado sobre el control.

Puede utilizar la propiedad MousePointer para indicar que la aplicación está ocupada estableciendo la propiedad a 11 para mostrar un icono de reloj de arena. También puede leer la propiedad MousePointer para determinar qué se está mostrando. Esto puede resultar útil si desea impedir que un usuario haga clic en un botón de comando mientras el puntero del mouse muestra un icono de reloj de arena.

El establecimiento de la propiedad MousePointer a 11 es equivalente a pasar el argumento True (– 1) al método Hourglass del objeto DoCmd. A la inversa, al pasar el argumento True al método Hourglass también se establece la propiedad MousePointer a 11.


Propiedad VariasFilas (MultiRow)

Puede utilizar la propiedad VariasFilas (MultiRow) para especificar o determinar si un control ficha puede mostrar más de una fila de fichas.

Valores

La propiedad VariasFilas (MultiRow) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	Se permiten varias filas.	True (–1)
No	(Predeterminado) No se permiten varias filas.	False (0)
Puede establecer la propiedad VariasFilas (MultiRow) mediante la hoja de propiedades del control, una macro o Visual Basic.

También puede establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado de un control o el método DefaultControl de Visual Basic.

Comentarios

Cuando la propiedad VariasFilas (MultiRow) está establecida a True, el número de filas se determina por el ancho y el número de fichas. El número de filas puede cambiar si se cambia el tamaño del control o si se agregan fichas adicionales al control.

Cuando la propiedad VariasFilas (MultiRow) está establecida a False y el ancho de las fichas sobrepasa el ancho del control, aparecen botones de desplazamiento en el lado derecho del control ficha. Puede utilizar los botones de desplazamiento para desplazarse por todas las fichas del control ficha.


Propiedad ÍndiceDePáginas (PageIndex)

Puede utilizar la propiedad ÍndiceDePáginas (PageIndex) para especificar o determinar la posición de un objeto Página (Page) dentro de una colección Páginas (Pages). La propiedad ÍndiceDePáginas (PageIndex) especifica el orden en que aparecen las páginas de un control ficha.

Valores

El valor de la propiedad ÍndiceDePáginas (PageIndex) es un valor Entero entre cero y el valor de la propiedad Contar (Count) de la colección Páginas (Pages) menos 1.

Puede establecer la propiedad ÍndiceDePáginas (PageIndex) mediante la hoja de propiedades de un objeto Página (Page), una macro o Visual Basic.

La propiedad ÍndiceDePáginas (PageIndex) puede establecerse en cualquier vista.

Comentarios

Al cambiar el valor de la propiedad ÍndiceDePáginas (PageIndex), cambia la ubicación de un objeto Página (Page) en la colección Páginas (Pages) y cambia visualmente el orden de las páginas de un control ficha.

También puede cambiar el orden de los objetos Página (Page) en la colección Páginas (Pages) mediante el cuadro de diálogo Orden de página que aparece al hacer clic con el botón secundario del mouse (ratón) en el control ficha en la vista Diseño y, a continuación, elegir Orden de página.


Propiedad ProjectName

Puede utilizar la propiedad ProjectName para especificar o determinar el nombre del objeto Application de Microsoft Access.

Valores

La propiedad ProjectName es una expresión de cadena que es el nombre del objeto Application de Microsoft Access. No puede establecer la propiedad ProjectName al nombre de una clase de objetos existente, por ejemplo, "application", "formulario" ("form") o "informe" ("report"). Si convierte una base de datos con un nombre que coincide con el de una clase de objetos existente, Microsoft Access agregará un guión bajo al nombre para prevenir conflictos de nombres. Por ejemplo, si la base de datos que está convirtiendo se llama "Application", el nombre de proyecto de la base de datos será "Application_" en Microsoft Access 97.

Puede establecer la propiedad ProjectName en la ficha Avanzadas del cuadro de diálogo Opciones (disponible al elegir Opciones en el menú Herramientas) o mediante el método SetOption de Visual Basic. Por ejemplo:

Application.SetOption "Project Name", "MiProyectoDeAccess"

Comentarios

Al crear una base de datos nueva, Microsoft Access establece la propiedad ProjectName al nombre de archivo de la base de datos sin la extensión ".mdb". El cambio del nombre de archivo de la base de datos no afecta al valor de la propiedad ProjectName existente.

Al establecer la propiedad ProjectName, el nombre del objeto Application aparece en el cuadro de diálogo Referencias, disponible en la ventana Módulo al hacer clic en Referencias en el menú Herramientas.

Cuando cambia el valor de la propiedad ProjectName, su proyecto no estará ya en estado compilado. Para recompilar el proyecto, debe cerrar y volver a abrir su base de datos y hacer clic en Compilar y guardar todos los módulos en el menú Depurar.

Desde otra aplicación, como Microsoft Excel, puede utilizar el nombre del proyecto como parte del nombre totalmente calificado de un elemento de un proyecto de Microsoft Access utilizando la sintaxis nombreproyecto.Application.Forms!nombreformulario. Por ejemplo, para hacer referencia al campo Apellidos del formulario Empleados de la base de datos de ejemplo Neptuno desde Microsoft Excel, establezca una referencia a la base de datos Neptuno y, a continuación, utilice la siguiente referencia:

Dim cadApellidos As String

cadApellidos = Neptuno.Application.Forms!Empleados!Apellidos

Puede crear una referencia a una base de datos de Microsoft Access seleccionando el nombre del proyecto (el objeto Application) en el cuadro de diálogo Referencias, disponible en la ventana Módulo al elegir Referencias en el menú Herramientas. Una vez seleccionado el nombre del proyecto, también aparece en la lista Proyecto/Biblioteca del Examinador de objetos.


Propiedad Estilo (Style) (Microsoft Access)
Propiedad Estilo (Style)

Puede utilizar la propiedad Estilo (Style) para especificar o determinar la apariencia de las fichas de un control ficha.

Valores

La propiedad Estilo (Style) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Fichas	(Predeterminado) Las fichas aparecen como fichas.	acTabs
Botones	Las fichas aparecen como botones.	acButtons
Ninguno	No aparecen fichas en el control.	acNone
Puede establecer la propiedad Estilo (Style) mediante la hoja de propiedades del control ficha, una macro o Visual Basic.

También puede establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado de un control o el método DefaultControl de Visual Basic.

Puede establecer la propiedad Estilo (Style) en cualquier vista.

Comentarios

Cuando la propiedad Estilo (Style) del control ficha está establecida a Fichas o Botones, la apariencia de las fichas viene determinada por las propiedades AltoFijoDeLaFicha (TabFixedHeight), AnchoFijoDeLaFicha (TabFixedWidth) y VariasFilas (MultiRow).

Puede establecer la propiedad Estilo (Style) del control ficha a Ninguno si desea tener un control absoluto sobre cuándo el usuario puede moverse entre las fichas. En versiones anteriores de Microsoft Access, los cuadros de diálogo de los asistentes se crearon empleando formularios de varias páginas. Ahora puede utilizar un control ficha para crear su propio asistente en el que cada página del Asistente está contenida en una página independiente de un control ficha con su propiedad Estilo (Style) establecida a Ninguno.


Propiedades AltoFijoDeLaFicha (TabFixedHeight) y AnchoFijoDeLaFicha (TabFixedWidth)

Puede utilizar las propiedades AltoFijoDeLaFicha (TabFixedHeight) y AnchoFijoDeLaFicha (TabFixedWidth) para especificar o determinar el alto y el ancho de las fichas de un control ficha.

Valores

Las propiedades AltoFijoDeLaFicha (TabFixedHeight) y AnchoFijoDeLaFicha (TabFixedWidth) contienen un valor que representa el alto y el ancho de las fichas en la unidad de medida especificada en el cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. Si establece estas propiedades a cero, las fichas se ajustan automáticamente al alto o el ancho del contenido de la ficha.

Puede establecer estas propiedades mediante la hoja de propiedades del control ficha, una macro o Visual Basic.

También puede establecer el valor predeterminado de estas propiedades mediante el estilo de control predeterminado de un control o el método DefaultControl de Visual Basic.

En Visual Basic, estas propiedades utilizan un valor Entero largo que representa el alto y el ancho de las fichas en twips y pueden establecerse en cualquier vista.

Nota   Para emplear una unidad de medida diferente del valor del cuadro de diálogo Propiedades de Configuración regional en el Panel de control de Windows, especifique la unidad, como cm o pda (por ejemplo, 5 cm o 3 pda).

Comentarios

No es posible cambiar el color de un control ficha. Si las fichas no cubren el ancho del control ficha, se muestra el área situada detrás de las fichas. Si sitúa un control ficha sobre un objeto con un color diferente del control ficha, debería asegurarse de que las fichas cubren el área de fondo del control.


Propiedad BarraDeHerramientas (Toolbar)

Puede utilizar la propiedad BarraDeHerramientas (Toolbar) para especificar la barra de herramientas que desea emplear para un formulario o un informe. Estas barras de herramientas se crean mediante el subcomando Personalizar del comando Barras de herramientas del menú Ver. Para obtener más información acerca de cómo crear barras de herramientas personalizadas, vea Crear una barra de herramientas personalizada para la base de datos actual.

Valores

El valor de la propiedad BarraDeHerramientas (Toolbar) es el nombre de la barra de herramientas personalizada que desea mostrar. Si deja el valor de la propiedad BarraDeHerramientas (Toolbar) en blanco, Microsoft Access muestra la barra de herramientas incorporada (predeterminada) del formulario o el informe.

Puede establecer la propiedad BarraDeHerramientas (Toolbar) mediante la hoja de propiedades del formulario o el informe, una macro o Visual Basic.

En Visual Basic, establezca esta propiedad mediante una expresión de cadena que representa el nombre de la barra de herramientas que desea mostrar.

Para mostrar la barra de herramientas incorporada de un formulario o un informe mediante una macro o Visual Basic, establezca la propiedad BarraDeHerramientas (Toolbar) a una cadena de longitud cero (" ").

Comentarios

Al establecer la propiedad BarraDeHerramientas (Toolbar), Microsoft Access muestra la barra de herramientas personalizada especificada cuando se abre el formulario o el informe. Esta barra de herramientas se muestra siempre que el formulario o el informe tiene el enfoque.


Propiedad Usar transacción (UseTransaction)

Puede utilizar la propiedad Usar transacción (UseTransaction) para especificar o determinar si una consulta de acción se ejecuta como una sola transacción. En algunas situaciones, el establecimiento de esta propiedad a No puede hacer que las consultas se ejecuten mucho más rápido.

Valores

La propiedad Usar transacción (UseTransaction) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) La consulta se ejecuta como una sola transacción.	True (–1)
No	La consulta no se ejecuta como una sola transacción.	False (0)
Puede establecer la propiedad Usar transacción (UseTransaction) mediante la hoja de propiedades de la consulta o Visual Basic. Para establecer esta propiedad con Visual Basic, primero debe agregarla a la colección Properties de un objeto QueryDef usando el método CreateProperty.

Comentarios

Cuando una consulta de creación de tabla, de eliminación, de datos anexados o de actualización tiene su propiedad Usar transacción (UseTransaction) establecida a Sí, el motor de base de datos Microsoft Jet almacena los registros devueltos en una caché y, si es necesario, almacena el resultado en una base de datos temporal en el disco. Cuando la consulta ha finalizado, la máquina de la base de datos Jet lee los registros de la base de datos temporal y los vuelve a escribir en la base de datos original.

Puede conseguir mejoras notables del rendimiento si establece la propiedad Usar transacción (UseTransaction) a No en las circunstancias adecuadas. Cuando la propiedad Usar transacción (UseTransaction) esté establecida a No, el usuario nunca encontrará los problemas asociados con demasiadas solicitudes de bloqueo. Además, la máquina de la base de datos Jet no almacena los resultados de las consultas en una base de datos temporal, consiguiendo de este modo un aumento considerable del rendimiento.

Si hay un gran número de registros que deben escribirse en la base de datos temporal, el rendimiento puede descender como consecuencia de la ejecución de una consulta de acción como una sola transacción. Además, al ejecutar consultas de eliminación o actualización en una base de datos compartida, se genera un gran número de solicitudes de bloqueo. Esto puede hacer descender el rendimiento y en algunos Sistemas Operativos de Red como Netware puede hacer que falle la consulta cuando las solicitudes de bloqueo sobrepasen el límite de 10.000.

Si una transacción no puede finalizarse, aparece un mensaje de error y tiene la posibilidad de guardar los cambios.

Cuando la propiedad Usar transacción (UseTransaction) está establecida a No, la única forma de deshacer toda una transacción es mediante el método RollBack de DAO en Visual Basic.


Propiedad Application

La propiedad Application se puede utilizar en Visual Basic para tener acceso al objeto activo Application de Microsoft Access y a las propiedades relacionadas con él.

Valores

La propiedad Application es establecida por Microsoft Access y es de sólo lectura en todas las vistas.

Comentarios

Cada objeto de Microsoft Access tiene una propiedad Application que devuelve el objeto Application actual. Se puede utilizar esta propiedad para tener acceso a cualquiera de las propiedades del objeto. Por ejemplo, se puede hacer referencia a la barra de menú para el objeto Application desde el formulario actual utilizando la sintaxis siguiente:

Me.Application.MenuBar


Ejemplo de las propiedades Application y DBEngine

En el ejemplo siguiente se muestran las propiedades DBEngine en un cuadro de mensaje.

Private Sub Comando1_Click()

MostrarInfoAplicación Me

End Sub

Function MostrarInfoAplicación(obj As Object) As Integer

Dim objApp As Object, entI As Integer, cadProps As String

On Error Resume Next

' Propiedad Application del formulario.

Set objApp = obj.Application

CuadroMsj "Propiedad Visible del objeto Application = " & objApp.Visible

If objApp.UserControl = True Then

For entI = 0 To objApp.DBEngine.Properties.Contador - 1

cadProps = cadProps & objApp.DBEngine.Properties(entI).Name & ", "

Next entI

End If

CuadroMsj Left(cadProps, Len(cadProps) - 2) & ".", vbOK, "DBEngine Properties"

End Function


Propiedad DBEngine

La propiedad DBEngine se puede utilizar en Visual Basic para tener acceso al objeto DBEngine actual y a las propiedades relacionadas con él.

Valores

La propiedad DBEngine es establecida por Microsoft Access y es de sólo lectura en todas las vistas.

Comentarios

La propiedad DBEngine del objeto Application representa al motor de base de datos Microsoft Jet. El objeto DBEngine es el objeto de nivel superior del modelo Objetos de acceso a datos (DAO) y contiene y controla todos los demás objetos de la jerarquía de Objetos de acceso a datos (DAO).


Propiedad UserControl

La propiedad UserControl se puede utilizar para determinar si la aplicación de Microsoft Access actual ha sido iniciada por el usuario o por otra aplicación con Automatización, antiguamente llamada Automatización OLE.

Valores

La propiedad UserControl puede tener los valores siguientes.

Valor	Descripción
Verdadero (True) (–1)	La aplicación actual ha sido iniciada por el usuario.
Falso (False) (0)	La aplicación actual ha sido iniciada por otra aplicación con Automatización.
Sólo se puede determinar el valor de la propiedad UserControl utilizando Visual Basic.

Esta propiedad es de sólo lectura en todas las vistas.

Comentarios

Cuando una aplicación es lanzada por el usuario, las propiedades Visible y UserControl del objeto Application están ambas establecidas a Verdadero. Cuando la propiedad UserControl está establecida a Verdadero, no se puede establecer la propiedad Visible del objeto a Falso.

Cuando se crea un objeto Application utilizando la Automatización, las propiedades Visible y UserControl del objeto están establecidas a Falso.


Propiedad Visible (objeto Application)

La propiedad Visible del objeto Application se puede utilizar para especificar o determinar si está minimizada una aplicación de Microsoft Access.

Valores

La propiedad Visible puede tener los valores siguientes.

Valor	Descripción
Verdadero (True) (–1)	La aplicación es visible.
Falso (False) (0)	La aplicación no es visible
Sólo se puede establecer la propiedad Visible del objeto Application utilizando Visual Basic. Puede establecer el valor predeterminado para esta propiedad mediante el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Comentarios

Cuando una aplicación es lanzada por el usuario, las propiedades Visible y UserControl del objeto Application están ambas establecidas a Verdadero. Cuando la propiedad UserControl está establecida a Verdadero, no se puede establecer la propiedad Visible del objeto a Falso.

Cuando se crea un objeto Application utilizando la Automatización (antiguamente llamada Automatización OLE), las propiedades Visible y UserControl del objeto están establecidas a Falso.

Nota   Cuando la propiedad Visible del objeto Application está establecida a Falso, la aplicación está minimizada pero no está oculta para el usuario.


Propiedad CodeContextObject

La propiedad CodeContextObject se puede utilizar para determinar el objeto en el que se está ejecutando una macro o código de Visual Basic.

Valores

La propiedad CodeContextObject es establecida por Microsoft Access y es de sólo lectura en todas las vistas.

Comentarios

Las propiedades ActiveForm y ActiveReport del objeto Pantalla (Screen) siempre devuelven el objeto que tiene actualmente el enfoque. El objeto que tiene el enfoque puede ser o no el objeto donde se está ejecutando actualmente una macro o código de Visual Basic, por ejemplo, cuando el código de Visual Basic se está ejecutando en el evento Timer de un formulario oculto.


Ejemplo de la propiedad CodeContextObject

En el ejemplo siguiente, se utiliza la propiedad CodeContextObject en una función para identificar el nombre del objeto en el que se ha producido un error. El nombre del objeto se usa luego en el título del cuadro de mensaje y en el texto del mensaje de error. La instrucción Error se utiliza en el evento Click del botón de comando para generar el error de este ejemplo.

Private Sub Comando1_Click()

On Error GoTo Comando1_Err

Error 11	' Genera el error de dividir por cero.

Exit Sub

Comando1_Err:

If MensajeError ("Evento Comando1_Clic()", vbYesNo + _

vbInformation, Err) = vbYes Then

Exit Sub

Else

Resume

End If

End Sub

Function MensajeError (cadTexto As String, entType As Integer, _

entErrVal As Integer) As Integer

Dim objActual As Object

Dim cadTítuloCuadroMsj As String

Set objActual = CodeContextObject

cadTítuloCuadroMsj = "Error en " & objActual.Name

cadTexto = cadTexto & "Error #" & entErrVal _

& " producido en " & objActual.Name

MensajeError = CuadroMsj(cadTexto, entType, cadTítuloCuadroMsj)

Err = 0

End Function


Propiedad TipoDePresentación (DisplayType)

Use la propiedad TipoDePresentación (DisplayType) para especificar si Microsoft Access muestra el contenido de un objeto OLE o un icono. Por ejemplo, si el objeto OLE es un documento de Microsoft Word y establece esta propiedad a Contenido, el control muestra el documento de Word; si establece esta propiedad a Icono, el control muestra el icono de Microsoft Word.

Valores

La propiedad TipoDePresentación (DisplayType) utiliza estos valores.

Valor	Descripción	Visual Basic
Contenido	(Predeterminado) Cuando un control contiene un objeto OLE, el control muestra los datos del objeto, tal como un documento o una hoja de cálculo.	acOLEDisplayContent (0)
Icono	Cuando un control contiene un objeto OLE, el control muestra el icono del objeto.	acOLEDisplayIcon (1)
Puede establecer la propiedad TipoDePresentación (DisplayType) en la hoja de propiedades, en una macro o usando Visual Basic. Puede establecer el valor predeterminado de esta propiedad usando el estilo de control predeterminado de un control o el método DefaultControl en Visual Basic.

Para un marco de objeto dependiente, la propiedad TipoDePresentación (DisplayType) sólo se puede establecer en la vista Diseño, pero se puede leer en todas las vistas. Para un marco de objeto independiente o gráfico, se puede establecer la propiedad en el cuadro de diálogo Insertar objeto al crear el objeto (la configuración predeterminada es Contenido o si selecciona la casilla de verificación Mostrar como icono la configuración es Icono).

Comentarios

La propiedad TipoDePresentación (DisplayType) determina el valor predeterminado de la casilla de verificación Mostrar como icono de los cuadros de diálogo Pegado especial, disponible al hacer clic en Pegado especial en el menú Edición y el cuadro de diálogo Objeto, mostrado cuando se inserta un marco de objeto independiente. Cuando presente estos cuadros de diálogo en la vista Formulario, Hoja de datos o Diseño, se selecciona automáticamente la casilla de verificación Mostrar como icono si la propiedad TipoDePresentación (DisplayType) es Icono. Por ejemplo, verá estos cuadros seleccionados cuando use Visual Basic para establecer la propiedad Action del control a acOLEInsertObjDlg o acOLEPasteSpecialDlg.

El valor de la propiedad TipoDePresentación (DisplayType) no tiene efecto en el estado de la casilla de verificación Mostrar como icono en el cuadro de diálogo Objeto cuando inserte un objeto en un cuadro de objeto independiente. Cuando pegue un objeto del portapapeles, la casilla de verificación Mostrar como icono refleja el estado del objeto en el portapapeles.

El cambio de la propiedad TipoDePresentación (DisplayType) de un marco de objeto dependiente no afecta a la presentación de los objetos existentes en el control. Sin embargo, tendrá efecto sobre los objetos nuevos que se agreguen al control mediante el comando Objeto del menú Insertar.


Propiedad ModoCambiarTamaño (SizeMode)

Use la propiedad ModoCambiarTamaño (SizeMode) para especificar cómo se cambia el tamaño de una imagen u otro objeto de un marco de objeto dependiente, un marco de objeto independiente o un control de imagen.

Valores

La propiedad ModoCambiarTamaño (SizeMode) utiliza estos valores.

Valor	Descripción	Visual Basic
Recortar	(Predeterminado) Muestra el objeto con su tamaño real. Si el objeto es mayor que el control, su imagen se recorta a nivel de los bordes del control.	acOLESizeClip (0)
Extender	Cambia el tamaño del objeto para llenar el control. Este valor puede distorsionar las proporciones del objeto.	acOLESizeStretch (1)
Zoom	Muestra todo el contenido del objeto después de cambiar su tamaño para que llene el alto o el ancho del gráfico o del marco de objeto sin distorsionar las proporciones del objeto. Este valor puede dejar espacio extra si se cambia el tamaño del control.	acOLESizeZoom (3)
Puede establecer la propiedad ModoCambiarTamaño (SizeMode) en la hoja de propiedades, en una macro o usando Visual Basic. Puede establecer esta el valor predeterminado de esta propiedad utilizando el estilo de control predeterminado de un control o el método DefaultControl en Visual Basic.

Sugerencia   Use Recortar para conseguir una presentación más rápida. Puede utilizar Extender para los gráficos de barras y gráficos de líneas sin restricciones para ajustes de tamaño. El valor Extender puede distorsionar círculos y fotografías.


Propiedad DocDeOrigen (SourceDoc)

Use la propiedad DocDeOrigen (SourceDoc) para especificar el archivo al que se va a crear un vínculo o que se va a incrustar al crear un objeto vinculado o incrustado utilizando la propiedad Action en Visual Basic.

Valores

Para un objeto incrustado, indique la ruta completa y el nombre del archivo que desea usar como plantilla y establezca la propiedad Action a acOLECreateEmbed.

Para un objeto vinculado, indique la ruta completa y el nombre del archivo al que se va a crear un vínculo y establezca la propiedad Action a acOLECreateLink.

Puede establecer esta propiedad en la hoja de propiedades, en una macro o usando Visual Basic.

Nota   Aunque esta propiedad aparece en la hoja de propiedades, sólo tiene efecto después de que se ha establecido la propiedad Action en una macro o usando Visual Basic.

Comentarios

Use la propiedad DocDeOrigen (SourceDoc) para especificar el archivo al que se va a crear un vínculo y la propiedad ElementoOrigen (SourceItem) del control para especificar los datos dentro de ese archivo. Si desea crear un vínculo a todo el objeto, deje la propiedad ElementoOrigen (SourceItem) en blanco.

Cuando se crea un objeto independiente vinculado, el valor de la propiedad ElementoOrigen (SourceItem) se concatena con el valor de la propiedad DocDeOrigen (SourceDoc). En la vista Formulario, Hoja de datos y Vista preliminar, el valor de la propiedad ElementoOrigen (SourceItem) del control es una cadena de longitud cero (" ") y el valor de la propiedad DocDeOrigen (SourceDoc) es la ruta completa al archivo vinculado, seguida de un signo de exclamación (!) o una barra invertida (\) y el valor de la propiedad ElementoOrigen (SourceItem), como se muestra en este ejemplo:

"C:\Trabajo\Trim1\Ingresos.xls!L1C1:L30C15"


Ejemplo de las propiedades de un objeto OLE

Este ejemplo crea un objeto OLE vinculado utilizando un marco de objeto independiente llamado OLE1 y ajusta el tamaño del control para mostrar todo el contenido del objeto cuando el usuario presiona un botón de comando.

Sub Command1_Click

OLE1.Class = "Excel.Sheet"	' Establecer nombre de clase.

OLE1.OLETypeAllowed = acOLELinked	' Especificar el tipo de objeto.

OLE1.SourceDoc = "C:\Excel\TextoOle.xls"	' Especificar el archivo de origen.

OLE1.SourceItem = "L1C1:L5C5"	' Especificar los datos para crear un vínculo.

OLE1.Action = acOLECreateLink	' Crear el objeto vinculado.

OLE1.SizeMode = acOLESizeZoom	' Ajustar el tamaño del control.

End Sub


Propiedad OpcionesDeActualización (UpdateOptions)

Puede utilizar la propiedad OpcionesDeActualización (UpdateOptions) para especificar cómo se actualiza un objeto OLE vinculado.

Valores

La propiedad OpcionesDeActualización (UpdateOptions) utiliza estos valores.

Valor	Descripción	Visual Basic
Automático	(Predeterminado) Actualiza el objeto cada vez que cambian los datos vinculados.	acOLEUpdateAutomatic (0)
Manual	Actualiza el objeto sólo cuando se establece la propiedad Action del objeto a acOLEUpdate o se actualiza el vínculo con el comando Vínculos del menú Edición.	acOLEUpdateManual (2)
Puede establecer la propiedad OpcionesDeActualización (UpdateOptions) en una hoja de propiedades, en una macro o usando Visual Basic. Puede establecer el valor predeterminado de esta propiedad usando un estilo de control predeterminado del control o el método DefaultControl en Visual Basic.

El valor de la propiedad OpcionesDeActualización (UpdateOptions) también está disponible por medio del comando Vínculos del menú Edición.

Comentarios

Normalmente, el objeto se actualiza automáticamente siempre que cambian los datos vinculados, pero puede hacer que Microsoft Access actualice los datos sólo cuando reciba una instrucción específica para llevar a cabo la actualización. Por ejemplo, si otros usuarios o aplicaciones pueden tener acceso o modificar los datos de una hoja de cálculo de un formulario, puede usar esta propiedad para especificar que los datos vinculados sólo se actualicen cuando la base de datos se abra en modo monousuario.

Cuando la propiedad OpcionesDeActualización (UpdateOptions) se establece a Manual, no se realizan actualizaciones basadas en el valor del cuadro Intervalo de actualización de la ficha Avanzado del cuadro de diálogo Opciones (comando Opciones del menú Herramientas).

Nota   Cuando se actualizan los datos de un objeto, se produce el evento Updated.

Este ejemplo establece la propiedad OpcionesDeActualización (UpdateOptions) de un marco de objeto independiente llamado OLE1 para que se actualice manualmente y, a continuación, utiliza la propiedad Action para forzar una actualización del objeto OLE del control.

OLE1.UpdateOptions = acOLEUpdateManual

OLE1.Action = acOLEUpdate


Propiedad Action

Puede utilizar la propiedad Action en Visual Basic para especificar la operación que debe realizar un objeto OLE.

Valores

La propiedad Action puede tener los valores siguientes.

Constante	Descripción
acOLECreateEmbed	Crea un objeto incrustado. Para utilizar este valor, primero debe establecer la propiedad TipoOLEPermitido (OLETypeAllowed) del control a acOLEEmbedded o acOLEEither. Establezca la propiedad Clase (Class) al tipo de objeto OLE que desea crear. Puede utilizar la propiedad DocDeOrigen (SourceDoc) para emplear un archivo existente como plantilla.
acOLECreateLink	Crea un objeto OLE vinculado a partir del contenido de un archivo. Para utilizar este valor, primero debe establecer las propiedades TipoOLEPermitido (OLETypeAllowed) y DocDeOrigen (SourceDoc) del control. Establezca la propiedad TipoOLEPermitido (OLETypeAllowed) a acOLELinked o a acOLEEither. La propiedad DocDeOrigen (SourceDoc) especifica el archivo utilizado para crear el objeto OLE. También puede establecer la propiedad ElementoOrigen (SourceItem) del control (por ejemplo, para especificar un intervalo de filas y columnas si el objeto que está creando es una hoja de trabajo de Microsoft Excel). Al crear un objeto OLE con este valor, el control muestra una imagen gráfica de metarchivo del archivo especificado en la propiedad DocDeOrigen (SourceDoc) del control. Si guarda el objeto OLE, sólo se guarda la información del vínculo, como el nombre de la aplicación que suministraba el objeto y el nombre del archivo vinculado, porque el control contiene una imagen de los datos pero ningún dato de origen.
acOLECopy	Copia el objeto al Portapapeles. Al copiar un objeto OLE al Portapapeles, todos los datos y la información del vínculo asociados con el objeto se sitúan asimismo en el Portapapeles. Puede copiar ambos objetos vinculados e incrustados al Portapapeles. El uso de este valor es equivalente a hacer clic en Copiar en el menú Edición.
acOLEPaste	Pega los datos del Portapapeles al control. Si la operación de pegado se realiza correctamente, la propiedad TipoOLE (OLEType) del control se establece a acOLELinked o a acOLEEmbedded. Si la operación de pegado no se realiza correctamente, la propiedad TipoOLE (OLEType) se establece a acOLENone. El uso de este valor de la propiedad acOLEPaste es equivalente a hacer clic en Pegar en el menú Edición.
acOLEUpdate	Recupera los datos actuales de la aplicación que suministró el objeto y muestra esos datos como un gráfico de metarchivo en el control.
acOLEActivate	Abre un objeto OLE para una operación, como la edición. Para utilizar este valor, primer debe establecer la propiedad Verbo (Verb) del control. La propiedad Verbo (Verb) especifica la operación que se realizará cuando se active el objeto OLE.
acOLEClose	Cierra un objeto OLE y termina la conexión con la aplicación que suministró el objeto. Este valor se aplica sólo a los objetos incrustados. El uso de este valor es equivalente a hacer clic en Cerrar en el menú Control del objeto.
acOLEDelete	Elimina el objeto OLE especificado y libera la memoria asociada. Este valor le permite eliminar explícitamente un objeto OLE. Los objetos se eliminan automáticamente cuando se cierra un formulario o cuando el objeto se actualiza a un nuevo objeto. No puede emplear la propiedad Action para eliminar un objeto OLE dependiente de su tabla o consulta base.
acOLEInsertObjDlg	Muestra el cuadro de diálogo Insertar objeto. En la vista Formulario o en la vista Hoja de datos, muestre este cuadro de diálogo para permitir al usuario crear un objeto nuevo o vincular o incrustar un objeto existente. Puede utilizar la propiedad TipoOLEPermitido (OLETypeAllowed) del control para determinar el tipo de objeto que el usuario puede crear (con la constante acOLELinked, acOLEEmbedded o acOLEEither) mediante este cuadro de diálogo.
acOLEPasteSpecialDlg	Muestra el cuadro de diálogo Pegado especial. En la vista Formulario u Hoja de datos, muestre este cuadro de diálogo para permitir al usuario pegar un objeto del Portapapeles. El cuadro de diálogo proporciona varias opciones, incluido el pegado de un objeto vinculado o incrustado. Puede utilizar la propiedad TipoOLEPermitido (OLETypeAllowed) de un control para determinar el tipo de objeto que puede pegarse (con la constante acOLELinked, acOLEEmbedded o acOLEEither) mediante este cuadro de diálogo.
acOLEFetchVerbs	Actualiza la lista de verbos que admite un objeto OLE. Para mostrar la lista de verbos, utilice las propiedades ObjectVerbs y ObjectVerbsCount.
Puede establecer la propiedad Action sólo mediante Visual Basic. El valor de la propiedad Action es un valor de tipo de datos Entero.

La propiedad Action no está disponible en la vista Diseño, pero puede leerse o establecerse en las demás vistas.

Comentarios

Cuando la propiedad Activado (Enabled) de un control está establecida a No o su propiedad Bloqueado (Locked) está establecida a Sí, no se pueden utilizar algunos de los valores de la propiedad Action. La tabla siguiente indica qué valores se permiten o no en estas condiciones.

Valor	Activado (Enabled) = No	Bloqueado (Locked) = Sí
acOLECreateEmbed	No permitido	No permitido
acOLECreateLink	No permitido	No permitido
acOLECopy	Permitido	Permitido
acOLEPaste	No permitido	No permitido
acOLEUpdate	No permitido	No permitido
acOLEActivate	Permitido	Permitido
acOLEClose	No permitido	Permitido
acOLEDelete	No permitido	No permitido
acOLEInsertObjDlg	No permitido	No permitido
acOLEPasteSpecialDlg	No permitido	No permitido
acOLEFetchVerbs	No permitido	Permitido


Propiedad ActivaciónAutomática (AutoActivate)

Puede utilizar la propiedad ActivaciónAutomática (AutoActivate) para especificar cómo el usuario puede activar un objeto OLE.

Valores

La propiedad ActivaciónAutomática (AutoActivate) puede tener los valores siguientes.

Valor	Descripción	Constante
Manual	El objeto OLE no se activa cuando recibe el enfoque o cuando el usuario hace doble clic en el control. Puede activar un objeto OLE sólo utilizando Visual Basic para establecer la propiedad Action del control a acOLEActivate.	acOLEActivateManual
RecibirEnfoque	(Para controles de marco de objeto independiente y gráfico exclusivamente) Si el control contiene un objeto OLE, la aplicación que suministró el objeto se activa cuando el control recibe el enfoque.	acOLEActivateGetFocus
Doble clic	(Predeterminado) Si el control contiene un objeto OLE, la aplicación que suministró el objeto se activa cuando el usuario hace doble clic en el control o presiona CTRL+ENTRAR cuando el control tiene el enfoque.	acOLEActivateDoubleClick
Puede establecer esta propiedad mediante la hoja de propiedades del control, una macro o Visual Basic.

La propiedad ActivaciónAutomática (AutoActivate) sólo puede establecerse en la vista Diseño.

Comentarios

Algunos objetos OLE pueden activarse desde dentro del control. Cuando se activa un objeto de este tipo, el objeto puede editarse (o puede realizarse alguna otra operación) desde dentro de los límites del control. Esta función se denomina activación en contexto. Si un objeto admite la activación en contexto, consulte la documentación de la aplicación utilizada para crear el objeto con el fin de obtener información acerca de cómo utilizar esta función.

En Visual Basic, puede determinar si un control contiene un objeto comprobando el valor de su propiedad TipoOLE (OLEType).

Nota   Si establece la propiedad ActivaciónAutomática (AutoActivate) de un control a Doble clic y especifica un evento DblClick para el control, el evento DblClick se produce antes de que se active el objeto.


Propiedad Clase (Class)

Puede utilizar la propiedad Clase (Class) para especificar o determinar el nombre de clase de un objeto OLE incrustado.

Valores

El valor de la propiedad Clase (Class) es una expresión de cadena suministrada por el usuario o por Microsoft Access al crear o pegar un objeto OLE.

Puede establecer la propiedad Clase (Class) mediante la hoja de propiedades del control, una macro o Visual Basic.

Comentarios

Un nombre de clase define el tipo de objeto OLE. Por ejemplo, Microsoft Excel admite varios tipos de objetos OLE, incluidas hojas de trabajo y gráficos. Sus nombres de clase son "Excel.Sheet" y "Excel.Chart" respectivamente. Al crear un objeto OLE en la vista Diseño eligiendo Pegado especial en el menú Edición u Objeto en el menú Insertar, Microsoft Access introduce el nombre de clase del nuevo objeto en la hoja de propiedades.

Nota   Para determinar el nombre de clase de un objeto OLE, consulte la documentación de la aplicación que suministra el objeto.

El valor de la propiedad Clase (Class) se actualiza al copiar un objeto desde el Portapapeles. Por ejemplo, si pega un gráfico de Microsoft Excel procedente del Portapapeles a un objeto OLE que anteriormente contenía una hoja de trabajo de Microsoft Excel, el valor de la propiedad Clase (Class) cambia de "Excel.Sheet" a "Excel.Chart". Puede pegar un objeto del Portapapeles utilizando Visual Basic para establecer la propiedad Action del control a acOLEPaste o acOLEPasteSpecialDlg.

Nota   La propiedad Clase OLE y la propiedad Clase (Class) son similares pero no idénticas. El valor de la propiedad Clase OLE es una descripción general del objeto OLE, mientras que el valor de la propiedad Clase (Class) es el nombre utilizado para hacer referencia al objeto OLE en Visual Basic. Ejemplos de valores de la propiedad Clase OLE son Gráfico de Microsoft Excel, Documento de Microsoft Word e Imagen de Paintbrush.


Propiedad Item (control ObjectFrame)

Puede utilizar la propiedad Item para obtener una descripción de los datos vinculados mostrados en un control de gráfico o un marco de objeto independiente.

Valores

El valor de la propiedad Item es una expresión de cadena y es de sólo lectura en todas las vistas.

Nota   Si está utilizando la Automatización (denominada antiguamente Automatización OLE) y necesita especificar un intervalo de datos, utilice la propiedad ElementoOrigen (SourceItem).

Comentarios

La descripción de un marco de objeto vinculado depende del tipo de objeto OLE al que está vinculado. Por ejemplo, si lo vincula a las celdas de una hoja de trabajo de Microsoft Excel, Microsoft Access muestra los datos de las celdas en el marco de objeto y la propiedad Item identifica las celdas vinculadas utilizando el formato fila-y-columna. Para un diagrama gráfico, el valor de la propiedad Item es la palabra "Gráfico". Para un gráfico, el valor es las coordenadas del área gráfica vinculada.

Nota   Los datos de un objeto OLE vinculado se muestran en el marco pero se almacenan en la aplicación que creó los datos. Para cambiar los datos, debe utilizar esa aplicación.

Al vincular un objeto OLE a un marco de objeto independiente eligiendo Pegado especial en el menú Edición, Microsoft Access establece las propiedades ObjetoOrigen (SourceObject), Clase OLE y Item. La tabla siguiente muestra los valores típicos de las propiedades para diversos objetos OLE.

Objeto	Propiedad ObjetoOrigen (SourceObject)	Propiedad Clase OLE	Propiedad Item
Hoja de trabajo	C:\Excel\Xls\Mihojatrabajo.xls	Hoja de trabajo de Microsoft Excel	R1C1:R7C4
Diagrama gráfico	C:\Excel\Xls\Migráfico.xlc	Gráfico de Microsoft Excel	Gráfico
Gráfico	C:\Windows\Mimapadebits.bmp	Imagen de Paintbrush	0 0 72 71


Propiedad lpOLEObject

Puede utilizar la propiedad lpOLEObject en Visual Basic para determinar la dirección de memoria de un objeto OLE. La propiedad lpOLEObject devuelve un puntero a IOLEObject.

Valores

Puede utilizar la propiedad lpOLEObject para hacer referencia a la dirección del objeto OLE activo. Si no se muestra ningún objeto, el valor es 0. El valor de la propiedad lpOLEObject es un valor de tipo de datos Largo especificado por Microsoft Access.

Este valor de esta propiedad no está disponible en la vista Diseño y es de sólo lectura en las demás vistas.

Comentarios

En las bibliotecas de vínculos dinámicos (DLL) de OLE, numerosas llamadas de funciones solicitan la dirección del objeto OLE como un argumento. Puede pasar el valor especificado por la propiedad lpOLEObject al realizar llamadas de la Interfaz de programación de aplicaciones (API) a las DLL de OLE.

Nota   Si se realiza una llamada de la API a una función que efectúa una devolución de llamada al control, el resultado será impredecible.


Propiedad Object

Puede utilizar la propiedad Object en Visual Basic para devolver una referencia al objeto de automatización que está asociado a un objeto OLE vinculado o incrustado en un control. Utilizando esta referencia, puede tener acceso a las propiedades o invocar los métodos del objeto OLE.

Valores

La propiedad Object devuelve una referencia a un objeto de automatización. Puede utilizar la instrucción Set para asignar este objeto de automatización a una variable de objeto. El tipo de referencia de objeto devuelto depende de en qué aplicación se creó el objeto OLE.

El valor de la propiedad Object es de sólo lectura en todas las vistas.

Comentarios

Al incrustar o vincular un objeto OLE en un formulario de Microsoft Access, puede establecer propiedades que determinan el tipo de objeto y el comportamiento del control contenedor. No obstante, no es posible establecer o leer directamente las propiedades del objeto OLE ni aplicar sus métodos, como puede hacer al ejecutar la Automatización. La propiedad Object devuelve una referencia a un objeto de automatización que representa el objeto OLE incrustado o vinculado. Mediante el uso de esta referencia, puede cambiar el objeto OLE estableciendo o leyendo sus propiedades o aplicando sus métodos. Por ejemplo, Microsoft Excel es un componente ActiveX que admite la Automatización. Si ha incrustado una hoja de trabajo de Microsoft Excel en un formulario de Microsoft Access, puede utilizar la propiedad Object para establecer una referencia al objeto Worksheet asociado a esa hoja de trabajo. A continuación, puede utilizar cualquiera de las propiedades y métodos del objeto Worksheet.

Para obtener información acerca de qué propiedades y métodos admite un objeto de automatización, consulte la documentación de la aplicación utilizada para crear el objeto OLE.


Ejemplo de la propiedad Object

El ejemplo siguiente utiliza la propiedad Object de un marco de objeto independiente denominado OLE1. La información del nombre y la dirección del cliente se inserta en un documento de Microsoft Word incrustado con formato de formulario de carta con marcadores de posición para el nombre y la dirección y texto estándar en el cuerpo de la carta. El procedimiento reemplaza la información del marcador de posición para cada registro e imprime la carta. No guarda copias de la carta impresa.

Sub ImprimirFormCarta_Click()

Dim objWord As Object

Dim cadCliente As String, cadDirección As String

Dim cadCiudad As String, cadRegión As String

' Asignar la propiedad Object del control a la variable.

Set objWord = Me!OLE1.Object.Application.Wordbasic

' Asignar la dirección del cliente a variables.

cadCliente = Me!NombreCompañía

cadDirección = Me!Dirección

cadCiudad = Me!Ciudad & ", "

If Not IsNull(Me!Región) Then

cadRegión = Me!Región

Else

cadRegión = Me!País

End If

' Activar el control ActiveX.

Me!OLE1.Action = acOLEActivate

With objWord

.StartOfDocument

' Ir al primer marcador de posición.

.LineDown 2

' Resaltar el texto del marcador de posición.

.EndOfLine 1

' Insertar el nombre del cliente.

.Insert cadCliente

' Ir al siguiente marcador de posición.

.LineDown

.StartOfLine

' Resaltar el texto del marcador de posición.

.EndOfLine 1

' Insertar la dirección.

.Insert cadDirección

' Ir al último marcador de posición.

.LineDown

.StartOfLine

' Resaltar el texto del marcador de posición.

.EndOfLine 1

' Insertar Ciudad y Región.

.Insert cadCiudad & cadRegión

.FilePrint

.FileClose

End With

Set objWord = Nothing

End Sub


Propiedad ObjectVerbs

Puede utilizar la propiedad ObjectVerbs en Visual Basic para determinar la lista de verbos que admite un objeto OLE.

Valores

El valor de la propiedad ObjectVerbs es una matriz de cadenas basadas en ceros.

El valor de esta propiedad no está disponible en la vista Diseño y es de sólo lectura en las demás vistas.

Comentarios

Puede utilizar la propiedad ObjectVerbs con la propiedad ObjectVerbsCount para mostrar una lista de los verbos admitidos por un objeto OLE. La propiedad Verbo (Verb) emplea esta lista de verbos para determinar qué operación debe realizarse cuando se activa un objeto OLE (cuando la propiedad Action está establecida a acOLEActivate).

El valor de la propiedad Verbo (Verb) es la posición de un verbo determinado en la lista de verbos devuelta por la propiedad ObjectVerbs. Por ejemplo, 1 especifica el primer verbo de la lista (el comando de Visual Basic ObjectVerbs(0) o el primer verbo de la matriz de la propiedad ObjectVerbs), 2 especifica el segundo verbo de la lista (el comando de Visual Basic ObjectVerbs(1) o el segundo verbo de la matriz de la propiedad ObjectVerbs), etc.

El primer verbo de la matriz de la propiedad ObjectVerbs, llamado por el comando de Visual Basic ObjectVerbs(0), es el verbo predeterminado. Si la propiedad Verbo (Verb) no se ha establecido, este verbo especifica la operación que se realiza cuando se activa el objeto OLE.

Las aplicaciones que muestran los objetos OLE normalmente incluyen el comando Objeto en el menú Edición. Cuando el usuario elige el comando Objeto, un submenú muestra los verbos del objeto. Puede utilizar las propiedades ObjectVerbs y ObjectVerbsCount para mostrar una lista de verbos en un formulario o un informe en lugar de en un menú.

La lista de verbos que admite un objeto varía según el estado del objeto. Para actualizar la lista de verbos que admite un objeto, establezca la propiedad Action del control a acOLEFetchVerbs. Asegúrese de actualizar la lista de verbos antes de presentarla al usuario.


Ejemplo de las propiedades ObjectVerbs y ObjectVerbsCount

El ejemplo siguiente devuelve los verbos admitidos por el objeto OLE en el control OLE1 y muestra cada verbo en un cuadro de mensaje.

Sub ObtenerListaVerbos(frm As Form, OLE1 As Control)

Dim entX As Integer, entNúmVerbos As Integer

Dim cadListaVerbos As String

' Actualizar la lista de verbos.

With frm!OLE1

.Action = acOLEFetchVerbs

entNúmVerbos = .ObjectVerbsCount

For entX = 0 To entNúmVerbos - 1

cadListaVerbos = cadListaVerbos &.ObjectVerbs(entX) & "; "

Next entX

End With

' Mostrar los verbos en un cuadro de mensaje.

MsgBox Left(cadListaVerbos, Len(cadListaVerbos) - 2)

End Sub


Propiedad ObjectVerbsCount

Puede utilizar la propiedad ObjectVerbsCount en Visual Basic para determinar el número de verbos admitidos por un objeto OLE.

Valores

El valor de la propiedad ObjectVerbsCount es un valor de tipo de datos Entero que especifica el número de elementos de la matriz de la propiedad ObjectVerbs.

El valor de esta propiedad no está disponible en la vista Diseño y es de sólo lectura en las demás vistas.

Comentarios

La lista de verbos que admite un objeto OLE puede variar según el estado del objeto. Para actualizar la lista de verbos admitidos, establezca la propiedad Action del control a acOLEFetchVerbs.


Propiedad Clase OLE

Puede utilizar la propiedad Clase OLE para obtener una descripción del tipo de objeto OLE contenido en un control de gráfico o en un marco de objeto independiente.

Valores

Esta propiedad se establece automáticamente en la hoja de propiedades del control a una expresión de cadena al elegir Objeto en el menú Insertar para agregar un objeto OLE a un formulario. El valor de la propiedad Clase OLE es de sólo lectura en todas las vistas.

Nota   Si está utilizando la Automatización (antiguamente denominada Automatización OLE) y necesita especificar un nombre para hacer referencia al objeto OLE, utilice la propiedad Clase (Class).

Comentarios

La propiedad Clase OLE y la propiedad Clase (Class) son similares pero no idénticas. El valor de la propiedad Clase OLE es una descripción general del objeto OLE mientras que el valor de la propiedad Clase (Class) es el nombre utilizado para hacer referencia al objeto OLE en Visual Basic. Gráfico de Microsoft Excel, Documento de Microsoft Word e Imagen de Paintbrush son ejemplos de los valores de la propiedad Clase OLE.


Propiedad TipoOLE (OLEType)

Puede utilizar la propiedad TipoOLE (OLEType) para determinar si un control contiene un objeto OLE y, si es así, si el objeto está vinculado o incrustado.

Valores

La propiedad TipoOLE (OLEType) puede tener los valores siguientes.

Valor	Descripción	Constante
Vinculado	El control contiene un objeto vinculado. Todos los datos del objeto son administrados por la aplicación que los creó.	acOLELinked
Incrustado	El control contiene un objeto incrustado. Todos los datos del objeto son administrados por Microsoft Access.	acOLEEmbedded
Ninguno	El control no contiene un objeto OLE.	acOLENone
La propiedad TipoOLE (OLEType) es de sólo lectura en todas las vistas.

Comentarios

Al crear un objeto OLE, utilice la propiedad TipoOLEPermitido (OLETypeAllowed) para determinar qué tipo de objeto puede contener un control.


Ejemplo de la propiedad TipoOLE (OLEType)

El ejemplo siguiente ilustra cómo mostrar el cuadro de diálogo Insertar objeto y cómo mostrar un mensaje de error si se hace clic en el botón Cancelar del cuadro de diálogo Insertar objeto.

Sub InsertarObjeto_Click()

Dim conUsuarioCancelado As Integer

' Mensaje de error devuelto cuando el usuario cancela.

conUsuarioCancelado = 2001

On Error GoTo ButtonErr

If OLE1.OLEType = acOLENone Then

' No se ha creado ningún objeto OLE.

' Se muestra el cuadro de diálogo Insertar objeto.

OLE1.Action = acOLEInsertObjDlg

End If

Exit Sub

ButtonErr:

If Err = conUsuarioCancelado Then ' Mostrar mensaje.

MsgBox "Ha hecho clic en el botón Cancelar; no se ha creado ningún objeto."

End If

Resume Next

End Sub


Propiedad TipoOLEPermitido (OLETypeAllowed)

Puede utilizar la propiedad TipoOLEPermitido (OLETypeAllowed) para especificar el tipo de objeto OLE que un control puede contener.

Valores

La propiedad TipoOLEPermitido (OLETypeAllowed) puede tener los valores siguientes.

Valor	Descripción	Constante
Vinculados	El control puede contener sólo un objeto vinculado.	acOLELinked
Incrustados	El control puede contener sólo un objeto incrustado.	acOLEEmbedded
Ambos	(Predeterminado) El control puede contener un objeto vinculado o un objeto incrustado.	acOLEEither
Puede establecer la propiedad TipoOLEPermitido (OLETypeAllowed) mediante la hoja de propiedades del control, una macro o Visual Basic. Puede establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado de un control o el método DefaultControl de Visual Basic.

Nota   Para los marcos de objeto independientes y los gráficos no es posible cambiar el valor de TipoOLEPermitido (OLETypeAllowed) una vez creado un objeto. Para los marcos de objeto dependientes es posible cambiar el valor una vez creado el objeto. El cambio del valor de la propiedad TipoOLEPermitido (OLETypeAllowed) sólo afecta a los objetos nuevos que se agregan al control.

Comentarios

Para determinar el tipo de objeto OLE que un control ya contiene, puede utilizar la propiedad TipoOLE (OLEType).


Propiedad ElementoOrigen (SourceItem)

Puede utilizar la propiedad ElementoOrigen (SourceItem) para especificar los datos de un archivo que se van a vincular al crear un objeto OLE vinculado.

Valores

Puede establecer la propiedad ElementoOrigen (SourceItem) especificando datos en unidades reconocidas por la aplicación que suministra el objeto. Por ejemplo, al vincular a Microsoft Excel, especifique el valor de la propiedad ElementoOrigen (SourceItem) mediante una referencia a una celda o un intervalo de celdas como R1C1 o R3C4:R9C22 o un intervalo con nombre, como Ingresos.

Nota   Para determinar la sintaxis adecuada para describir una unidad de datos de un objeto determinado, consulte la documentación de la aplicación utilizada al crear el objeto.

Puede establecer esta propiedad mediante la hoja de propiedades del control, una macro o Visual Basic.

En Visual Basic, esta propiedad se establece mediante una expresión de cadena.

Comentarios

La propiedad TipoOLEPermitido (OLETypeAllowed) del control debe establecerse a Vinculados o a Ambos al utilizar esta propiedad. Emplee la propiedad DocDeOrigen (SourceDoc) del control para especificar el archivo que se va a vincular.


Propiedad Verbo (Verb)

Puede utilizar la propiedad Verbo (Verb) para especificar la operación que debe llevarse a cabo cuando se activa un objeto OLE, lo que se permite cuando la propiedad Action del control está establecida a acOLEActivate.

Valores

Puede establecer la propiedad Verbo (Verb) especificando un valor de tipo de datos Entero que indique la posición de un verbo en la lista de verbos devueltos por la propiedad ObjectVerbs. Establezca la propiedad Verbo (Verb) a 1 para especificar el primer verbo de la lista, a 2 para especificar el segundo verbo de la lista, etc.

Puede establecer la propiedad Verbo (Verb) mediante la hoja de propiedades del control, una macro o Visual Basic. Es posible establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado o el método DefaultControl de Visual Basic.

Si no utiliza la propiedad ObjectVerbs para identificar un verbo específico, puede establecer la propiedad Verbo (Verb) a uno de los valores siguientes para indicar la operación que debe llevarse a cabo. Estos valores especifican los verbos estándares admitidos por todos los objetos.

Constante	Valor	Descripción
acOLEVerbPrimary	0	Realiza la operación predeterminada del objeto.
acOLEVerbShow	–1	Activa el objeto para su edición.
acOLEVerbOpen	–2	Abre el objeto en una ventana de aplicación independiente.
acOLEVerbHide	–3	Para los objetos incrustados, oculta la aplicación que se utilizó para crear el objeto.
Con los objetos de algunas aplicaciones, puede utilizar estos valores adicionales.

Constante	Valor	Descripción
acOLEVerbInPlaceUIActivate	–4	Activa el objeto para su edición dentro del control. Los menús y las barras de herramientas del servidor OLE se vuelven disponibles en el contenedor OLE.
acOLEVerbInPlaceActivate	–5	Activa el objeto dentro del control. Los menús y las barras de herramientas del servidor OLE no están disponibles en el contenedor OLE.
Comentarios

Cada objeto admite su propio conjunto de verbos. Por ejemplo, muchos objetos admiten los verbos Edit y Play. Puede utilizar las propiedades ObjectVerbs y ObjectVerbsCount para averiguar qué verbos admite un objeto.

Microsoft Access utiliza automáticamente el verbo predeterminado de un objeto si el usuario hace doble clic en un objeto cuya propiedad ActivaciónAutomática (AutoActivate) está establecida a Doble clic.


Propiedad ForzarNuevaPágina (ForceNewPage)

La propiedad ForzarNuevaPágina (ForceNewPage) se puede utilizar para especificar si las secciones del formulario (encabezado, detalle, pie de página) o las secciones del informe (encabezado, detalle, pie de página) se imprimen en una página aparte en lugar de imprimirse en la página actual. Por ejemplo, quizás esté diseñada la última página de un informe como formulario de pedido. Si la propiedad ForzarNuevaPágina (ForceNewPage) del pie de página del informe está establecida a Antes de la sección, el formulario de pedido siempre se imprime en una página nueva.

Nota   La propiedad ForzarNuevaPágina (ForceNewPage) no se aplica a encabezados de página ni pies de página.

Valores

La propiedad ForzarNuevaPágina (ForceNewPage) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Ninguno	(Predeterminado) La sección actual (la sección para la que se está estableciendo la propiedad) se imprime en la página actual.	0
Antes de la sección	La sección actual se imprime en la parte superior de una página nueva.	1
Después de la sección	La sección que sigue inmediatamente a la sección actual se imprime en la parte superior de una página nueva.	2
Antes y después	La sección actual se imprime en la parte superior de una página nueva y la sección siguiente se imprime en la parte superior de una página nueva.	3
Esta propiedad se puede establecer utilizando la hoja de propiedades de la sección, una macro o Visual Basic.

Comentarios

A continuación hay algunos ejemplos de valores de la propiedad ForzarNuevaPágina (ForceNewPage).

Sección	Valor de ejemplo	Descripción
Encabezado de grupo que muestra el año	Antes de la sección	El encabezado de grupo se imprime en la parte superior de la página, seguido de la sección de detalle, pie de página de grupo y pie de página.
Sección de detalle de un informe	Después de la sección	El pie de página de grupo se imprime en la parte superior de una página nueva.
Encabezado de informe que contiene el título del informe y el logo de la compañía.	Después de la sección	El título del informe y el logo se imprimen en una página aparte al comienzo del informe.


Ejemplo de la propiedad ForzarNuevaPágina (ForceNewPage)

En el ejemplo siguiente se devuelve el valor de la propiedad ForzarNuevaPágina (ForceNewPage) para la sección de detalle del informe Ventas por fecha y se asigna éste a la variable entGetVal.

Dim entGetVal As Integer

entGetVal = Reports![Ventas por año].Section(acDetalle).ForceNewPage


Propiedad OcultarDuplicados (HideDuplicates)

La propiedad OcultarDuplicados (HideDuplicates) se puede utilizar para ocultar un control de un informe cuando su valor es el mismo que el contenido en el registro. anterior. Por ejemplo, en un informe que enumera los proveedores y sus productos, cada nombre de proveedor puede aparecer una vez para cada grupo de productos, en lugar de aparecer para cada producto.

Nota   La propiedad OcultarDuplicados (HideDuplicates) se aplica sólo a controles (casilla de verificación, cuadro combinado, cuadro de lista, botón de opción, grupo de opciones, cuadro de texto o botón de alternar) de un informe.

Esta propiedad no se aplica a casillas de verificación, botones de opción o botones de alternar cuando éstos aparecen en un grupo de opciones. Se aplica al grupo de opciones en sí.

Valores

La propiedad OcultarDuplicados (HideDuplicates) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	Si el valor de un control o los datos que contiene es lo mismo que había en el registro anterior, se oculta el control.	Verdadero (True) ( – 1 )
No	(Predeterminado) El control es visible independientemente del valor contenido en el registro anterior.	Falso (False) (0)
Esta propiedad se puede establecer utilizando la hoja de propiedades del control, una macro o Visual Basic.

La propiedad OcultarDuplicados (HideDuplicates) sólo se puede establecer en la vista Diseño del informe.

Comentarios

Se puede utilizar la propiedad OcultarDuplicados (HideDuplicates) para crear un informe agrupado utilizando sólo la sección de detalle en lugar de utilizar el encabezado de grupo y la sección de detalle.


Ejemplo de la propiedad OcultarDuplicados (HideDuplicates)

En el ejemplo siguiente se devuelve el valor de la propiedad OcultarDuplicados (HideDuplicates) para el cuadro de texto NombreCategoría y se asigna el valor a la variable entCurVal.

Dim entCurVal As Integer

entCurVal = Me!NombreCategoría.HideDuplicates


Propiedad MantenerJuntos (KeepTogether) - Secciones
Propiedad MantenerJuntos (KeepTogether) — Secciones

La propiedad MantenerJuntos (KeepTogether) de una sección se puede utilizar para imprimir una sección entera de un formulario o informe en una página. Por ejemplo, puede haber un grupo de información relacionada que no se desea imprimir en dos páginas.

Nota   La propiedad MantenerJuntos (KeepTogether) se aplica sólo a las secciones de formularios e informes (excepto encabezados de página y pies de página).

Valores

La propiedad MantenerJuntos (KeepTogether) de una sección puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	Microsoft Access comienza a imprimir la sección en la parte superior de la página siguiente, si no puede imprimir la sección completa en la página actual.	Verdadero (True) ( – 1 )
No	(Predeterminado) Microsoft Access imprime todo lo posible de la sección en la página actual e imprime el resto en la página siguiente.	Falso (False) (0)
Esta propiedad se puede establecer utilizando la hoja de propiedades de la sección, una macro o Visual Basic.

Sólo se puede establecer la propiedad MantenerJuntos (KeepTogether) de una sección en la vista Diseño del formulario o en la vista Diseño del informe.

Comentarios

Normalmente, cuando se produce un salto de página mientras se está imprimiendo una sección, Microsoft Access continúa imprimiendo la sección en la página siguiente. Utilizando la propiedad MantenerJuntos (KeepTogether) de la sección, se puede imprimir la sección entera en una página. Si una sección ocupa más de una página, Microsoft Access empieza a imprimir en la página siguiente y continúa en la sucesiva.

Si la propiedad MantenerJuntos (KeepTogether) de un grupo está establecida a Grupo entero o Con el primer detalle y la propiedad MantenerJuntos (KeepTogether) de una sección está establecida a No, se ignora el valor de la propiedad MantenerJuntos (KeepTogether) para la sección.


Ejemplo de la propiedad MantenerJuntos (KeepTogether) - Secciones
Ejemplo de la propiedad MantenerJuntos (KeepTogether) — Secciones

En el ejemplo siguiente se devuelve el valor de la propiedad MantenerJuntos (KeepTogether) de la sección de detalle de un informe y se asigna el valor a la variable entGetVal.

Dim entGetVal As Integer

entGetVal = Me.Section(acDetalle).KeepTogether


Propiedad NuevaFilaOColumna (NewRowOrCol)

La propiedad NuevaFilaOColumna (NewRowOrCol) se puede utilizar para especificar si una sección y los datos asociados a ella se van a imprimir en una nueva fila o columna dentro de un informe de columnas múltiples o formulario de columnas múltiples. Por ejemplo, se puede utilizar esta propiedad para imprimir cada encabezado de grupo en la parte superior de una columna nueva en un informe de columnas múltiples.

Nota   La propiedad NuevaFilaOColumna (NewRowOrCol) no se aplica a los encabezados de página ni pies de página.

Valores

La propiedad NuevaFilaOColumna (NewRowOrCol) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Ninguno	(Predeterminado) Los saltos de fila o columna vienen determinados por los valores del cuadro de diálogo Configurar página (disponible haciendo clic en la opción Configurar página del menú Archivo) y el espacio disponible en la página.	0
Antes de la sección	Microsoft Access comienza a escribir la sección actual (la sección para la que se está estableciendo la propiedad, por ejemplo, una sección de encabezado de grupo) en una nueva fila o columna. Luego imprime la sección siguiente, por ejemplo, una sección de detalle, en la misma fila o columna.	1
Después de la sección	Microsoft Access comienza a escribir la sección actual, por ejemplo, una sección de encabezado de grupo, en la fila o columna actual. Comienza a imprimir la sección siguiente, por ejemplo, una sección de detalle, en la fila o columna siguiente.	2
Antes y después	Microsoft Access comienza a imprimir la sección actual en una fila o columna nueva. Comienza a escribir la sección siguiente en la fila o columna siguiente.	3
Esta propiedad se puede establecer utilizando la hoja de propiedades de la sección, una macro o Visual Basic.

Sólo se puede establecer la propiedad NuevaFilaOColumna (NewRowOrCol) en la vista Diseño del formulario o en la vista Diseño del informe.

Comentarios

Los elementos siguientes son algunos valores de ejemplo para una sección de encabezado de grupo de un informe de columnas múltiples. Asegúrese de que está seleccionado Hacia abajo y después a lo ancho en Diseño de columna en la ficha Columnas del cuadro de diálogo Configurar página.

Valor de ejemplo	Resultado
Antes de la sección	El encabezado de grupo se imprime en la parte superior de una columna nueva.
Después de la sección	La sección de detalle se imprime en la parte superior de una columna nueva.
Antes y después	El encabezado de grupo se imprime solo en una columna y la sección de detalle se imprime en la parte superior de una columna nueva.
Las secciones de un formulario o informe se suelen escribir verticalmente en una página. La opción predeterminada de Diseño de columna es A lo ancho y después hacia abajo. Se pueden escribir las secciones en columnas múltiples de una página haciendo clic en Hacia abajo y después a lo ancho en Diseño de columna en la ficha Columnas del cuadro de diálogo Configurar página.

Si se establece la propiedad NuevaFilaOColumna (NewRowOrCol) a Antes de la sección, la orientación horizontal o vertical de la página afecta a la forma en que aparece la sección al imprimir. Si hace clic en A lo ancho y después hacia abajo bajo Diseño de columna en la ficha Columnas del cuadro de diálogo Configurar página, Microsoft Access comienza a imprimir la sección al comienzo de una nueva fila; si por el contrario selecciona Hacia abajo y después a lo ancho, Microsoft Access comienza a imprimir la sección al principio de una nueva columna.


Ejemplo de la propiedad NuevaFilaOColumna (NewRowOrCol)

En el ejemplo siguiente se devuelve el valor de la propiedad NuevaFilaOColumna (NewRowOrCol) y se asigna a la variable entGetVal.

Dim entGetVal As Integer

entGetVal = Me.Section(1).NewRowOrCol

En el ejemplo siguiente se presentan dos diseños de un informe que divide datos en cuatro grupos (Encab1 a Encab4). Cada grupo incluye entre tres y seis registros y cada registro tiene un campo a y un campo b. El diseño difiere sólo en la configuración de estos campos bajo Diseño de columna en la ficha Columnas del cuadro de diálogo Configurar página y en los valores de sus propiedades NuevaFilaOColumna (NewRowOrCol). Advierta que el cuadro Ancho bajo Tamaño de columna en la ficha Columnas tiene que estar establecido al ancho real del campo. Además, el valor Antes de la sección de la propiedad NuevaFilaOColumna (NewRowOrCol) requiere una sección de encabezado de página mayor que cero para que la opción Hacia abajo y después a lo ancho funcione correctamente.

• Diseño de columna — A lo ancho y después hacia abajo • Opciones de la cuadrícula — Número de columnas establecido a 4 • Valor de la propiedad NuevaFilaOColumna (NewRowOrCol) para la sección de encabezado de grupo — Antes y después Encab1 1a 1b 2a 2b 3a 3b 4a 4b 5a 5b Encab2 1a 1b 2a 2b 3a 3b 4a 4b Encab3 1a 1b 2a 2b 3a 3b Encab4 1a 1b 2a 2b 3a 3b 4a 4b 5a 5b 6a 6b	• Diseño de columna — Hacia abajo y después a lo ancho • Opciones de la cuadrícula — Número de columnas establecido a 4 • Valor de la propiedad NuevaFilaOColumna (NewRowOrCol) para la sección de encabezado de grupo — Antes de la sección Encab1 Encab2 Encab3 Encab4 1a 1b 1a 1b 1a 1b 1a 1b 2a 2b 2a 2b 2a 2b 2a 2b 3a 3b 3a 3b 3a 3b 3a 3b 4a 4b 4a 4b 4a 4b 5a 5b 5a 5b 6a 6b


Propiedades Página y Páginas (Page y Pages)

Las propiedades Página (Page) y Páginas (Pages) se pueden utilizar para devolver información necesaria para imprimir números de página en un formulario o informe. Por ejemplo, se pueden utilizar estas propiedades para imprimir "Página n de nn" en el pie de página de un informe.

•	La propiedad Página (Page) especifica el número de la página actual cuando se está imprimiendo un informe.

•	La propiedad Páginas (Pages) especifica el número total de páginas de un formulario o informe.

Valores

Aunque se puede establecer la propiedad Página (Page) a un valor de tipo Entero, lo más frecuente es utilizar estas propiedades para devolver información acerca de los números de página. Ambas propiedades devuelven un valor de tipo Entero cuando se utilizan en una expresión.

Las propiedades Página (Page) y Páginas (Pages) se pueden utilizar en una expresión, una macro o Visual Basic.

Estas propiedades sólo están disponibles en Vista preliminar o al imprimir.

La propiedad Páginas (Pages) es de sólo lectura siempre.

Comentarios

Para hacer referencia a la propiedad Páginas (Pages) en una macro o en Visual Basic, el formulario o informe tiene que incluir un cuadro de texto cuya propiedad OrigenDelControl (ControlSource) esté establecida a una expresión que utilice Páginas (Pages). Por ejemplo, se pueden utilizar las expresiones siguientes como valor de la propiedad OrigenDelControl (ControlSource) para un cuadro de texto de un pie de página.

Esta expresión	Imprime
=Page	Un número de página (por ejemplo, 1, 2, 3) en el pie de página.
="Página " & Page & " de " & Páginas	"Página n de nn" (por ejemplo, Página 1 de 5, Página 2 de 5) en el pie de página.
=Páginas	El número total de páginas del formulario o informe (por ejemplo, 5).


Ejemplo de las propiedades Página (Page) y Páginas (Pages)

En el ejemplo siguiente se muestra un mensaje que dice cuántas páginas contiene el informe. Para que funcione este ejemplo, el informe tiene que incluir un cuadro de texto con la propiedad OrigenDelControl (ControlSource) establecida a la expresión =Páginas. Para probar este ejemplo, pegue el código siguiente al evento Page del formulario Lista alfabética de productos.

Dim entTotalPages As Integer, txtMsj As String

entTotalPages = Me.Páginas

txtMsj = "Este informe contiene " & entTotalPages & " páginas."

CuadroMsj txtMsj


Propiedades EncabezadoDePágina y PieDePágina (PageHeader y PageFooter)

Las propiedades EncabezadoDePágina (PageHeader) y PieDePágina (PageFooter) se pueden utilizar para especificar si el encabezado de página o el pie de página de un informe se imprimen en la misma página que el encabezado de informe o el pie de página de informe. Por ejemplo, quizás desee no imprimir un encabezado de página que contenga el número de página en la primera página de un informe si el encabezado de informe es una página de portada.

Valores

Las propiedades EncabezadoDePágina (PageHeader) y PieDePágina (PageFooter) pueden tener los valores siguientes.

Valor	Descripción	Visual Basic
En todas las páginas	(Predeterminado) El encabezado de página o pie de página se imprimen en todas las páginas de un informe.	0
Sin encabezado de informe	El encabezado de página o pie de página no se imprimen en la misma página que el encabezado de informe. Microsoft Access imprime el encabezado del informe en una nueva página.	1
Sin pie de informe	El encabezado de página o pie de página no se imprime en la misma página que el pie de página del informe. Microsoft Access imprime el pie de página del informe en una nueva página.	2
Sin encabezado/pie de informe	El encabezado de página o pie de página no se imprimen en una página que tiene un encabezado o un pie de página de informe. Microsoft Access imprime el encabezado o pie de página de informe en una nueva página.	3
Estas propiedades se pueden establecer utilizando la hoja de propiedades del informe, una macro o Visual Basic.

Las propiedades EncabezadoDePágina (PageHeader) y PieDePágina (PageFooter) sólo se pueden establecer en la vista Diseño del informe.

Comentarios

Microsoft Access imprime normalmente encabezados de página o pies de página del informe en cada página de un informe, incluido el primero y el último.

En la vista Diseño del informe, haga clic en Encabezado o pie de página del menú Ver para mostrar las secciones de encabezado de página y pie de página.

Nota   Cuando se imprimen formularios, los encabezados de página y pies de página se imprimen siempre en todas las páginas.


Ejemplo de las propiedades EncabezadoDePágina (PageHeader) y PieDePágina (PageFooter)
Ejemplo de las propiedades EncabezadoDePágina (PageHeader) y PieDePágina, (PageFooter)

En el ejemplo siguiente se establece la propiedad EncabezadoDePágina (PageHeader) de un informe a Sin encabezado de informe. Para ejecutar este ejemplo, escriba la línea siguiente en la ventana Depuración de un informe llamado Informe1.

Reports!Informe1.PageHeader = 1


Propiedad ImpresiónLáserRápida (FastLaserPrinting)

La propiedad ImpresiónLáserRápida (FastLaserPrinting) se puede utilizar para especificar si las líneas y rectángulos se reemplazan por líneas de carácter de texto, que son similares a los caracteres de subrayado (_) y a la barra vertical (|), cuando se imprime un formulario o informe en la mayoría de las impresoras láser. Reemplazar las líneas y rectángulos con líneas de carácter de texto puede hacer la impresión mucho más rápida.

Valores

La propiedad ImpresiónLáserRápida (FastLaserPrinting) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) Las líneas y rectángulos se reemplazan por líneas de carácter de texto.	True (–1)
No	Las líneas y rectángulos no se reemplazan por líneas de carácter de texto.	False (0)
Esta propiedad se puede establecer utilizando la hoja de propiedades de un formulario o informe, una macro o Visual Basic.

Comentarios

La propiedad ImpresiónLáserRápida (FastLaserPrinting) afecta a cualquier línea o rectángulo de un formulario o informe, incluidos los controles que contienen tales formas (por ejemplo, un borde alrededor de un cuadro de texto).

Nota   Esta propiedad no surte ningún efecto en las impresoras PostScript, impresoras matriciales o en las versiones antiguas de impresoras láser que no admiten líneas de carácter de texto.

Cuando esta propiedad está establecida a Sí y el formulario o informe que se está imprimiendo tiene rectángulos o líneas superpuestos, los rectángulos o líneas que están encima no borran los rectángulos o líneas que están debajo. Si utiliza gráficos superpuestos en un informe, establezca la propiedad ImpresiónLáserRápida (FastLaserPrinting) a No.


Ejemplo de la propiedad ImpresiónLáserRápida (FastLaserPrinting)

El ejemplo siguiente muestra cómo establecer la propiedad ImpresiónLáserRápida (FastLaserPrinting) para el informe Factura mientras está en la vista Diseño del informe:

DoCmd.OpenReport "Factura", acDesign

Reports!Factura.FastLaserPrinting = True

DoCmd.Close acReport, "Factura", acSaveYes


Propiedad NúmeroDeFormatos (FormatCount)

La propiedad NúmeroDeFormatos (FormatCount) se puede utilizar para determinar el número de veces que se ha evaluado la propiedad AlDarFormato (OnFormat) para la sección actual de un informe.

Valores

Esta propiedad sólo se puede utilizar en una macro o un procedimiento de evento de Visual Basic especificado por el valor de la propiedad AlDarFormato (OnFormat) de una sección.

El valor de la propiedad NúmeroDeFormatos (FormatCount) es del tipo de datos Largo.

Esta propiedad no está disponible en la vista Diseño del informe y es de sólo lectura en las demás vistas.

Comentarios

Microsoft Access incrementa la propiedad NúmeroDeFormatos (FormatCount) cada vez que se evalúa el valor de la propiedad AlDarFormato (OnFormat) para la sección actual. Cuando se da formato a la sección siguiente, Microsoft Access restablece la propiedad NúmeroDeFormatos (FormatCount) a 1.

Bajo ciertas circunstancias, Microsoft Access da formato a una sección más de una vez. Por ejemplo, se podría diseñar un informe en el que la propiedad MantenerJuntos (KeepTogether) de la sección Detalle está establecida a Sí. Cuando Microsoft Access llega al final de la página, da formato a la sección Detalle actual para ver si hay espacio suficiente. Si no lo hay, Microsoft Access va a la página siguiente y vuelve a dar formato a la sección. En este caso, el valor de la propiedad NúmeroDeFormatos (FormatCount) para la sección de detalle es 2 porque se le ha dado formato dos veces antes de imprimirla.

La propiedad NúmeroDeFormatos (FormatCount) se puede utilizar para obligar a que una operación que afecta al formato se ejecute sólo una vez en cada sección. En el ejemplo siguiente, la función DBúsq (DLookup) se evalúa sólo cuando la propiedad NúmeroDeFormatos (FormatCount) tiene el valora 1:

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)

Const conNegrita = 700

Const conNormal = 400

If FormatCount = 1 Then

If DLookup("NombreCompañía", _

"Clientes", "IdCliente = Reports!" _

& "[Etiquetas de cliente]!IdCliente") _

Like "B*" Then

LíneaNombreCompañía.FontWeight = conNegrita

Else

LíneaNombreCompañía. FontWeight = conNormal

End If

End If

End Sub


Propiedades MoverDiseño (MoveLayout), RegistroSiguiente (NextRecord) e ImprimirSección (PrintSection)

Se pueden utilizar combinaciones de valores de estas propiedades en Visual Basic para especificar o cambiar el diseño de un informe cuando se pasa la vista preliminar del informe o éste se imprime o se guarda en un archivo:

•	La propiedad MoverDiseño (MoveLayout) especifica si Microsoft Access debe ir a la siguiente ubicación de impresión de la página.

•	La propiedad NextRecord (RegistroSiguiente) especifica si se debe avanzar una sección al registro siguiente.

•	La propiedad ImprimirSección (PrintSection) especifica si se debe imprimir una sección.

Valores

La propiedad MoverDiseño (MoveLayout) puede tener los valores siguientes.

Valor	Descripción
True (–1)	(Predeterminado) Las propiedades Izquierda (Left) y Superior (Top) de la sección avanzan a la siguiente posición para imprimir.
False (0)	Las propiedades Izquierda (Left) y Superior (Top) de la sección no se modifican.
La propiedad NextRecord (RegistroSiguiente) puede tener los valores siguientes.

Valor	Descripción
True	(Predeterminado) La sección avanza al registro siguiente.
False	La sección no avanza al registro siguiente.
La propiedad ImprimirSección (PrintSection) puede tener los valores siguientes.

Valor	Descripción
True	(Predeterminado) Se imprime la sección.
False	No se imprime la sección.
Para establecer estas propiedades, especifique una macro o procedimiento de evento para la propiedad AlDarFormato (OnFormat) de una sección.

Microsoft Access establece estas propiedades a True antes del evento Format de cada sección.

Comentarios

Estas propiedades son útiles cuando desea utilizar un informe como una plantilla en la que se escriben los datos desde una macro o Visual Basic a medida que se imprime.

La tabla siguiente muestra el resultado de diferentes combinaciones de los valores de estas propiedades.

MoverDiseño (MoveLayout)	NextRecord (RegistroSiguiente)	ImprimirSección (PrintSection)	Descripción
True	True	True	(Predeterminado) Va a la siguiente posición para imprimir, obtiene el registro siguiente e imprime los datos.
True	False	True	Va a la siguiente posición para imprimir, no avanza al registro siguiente, pero imprime los datos. Se suele utilizar cuando los datos de una sección necesitan más espacio de lo que permite el diseño y se desea imprimir los demás datos en el espacio que, de otro modo, ocuparía la sección siguiente.
False	True	False	Salta un registro sin dejar un espacio en blanco en la página.
True	True	False	Salta un registro y deja un espacio en blanco en la página.
True	False	False	Deja un espacio en blanco sin saltar un registro.
False	True	True	Imprime el registro actual encima del último registro como superpuesto.
False	False	True	No permitido.
False	False	False	No permitido.


Propiedad NúmeroImpresiones (PrintCount)

La propiedad NúmeroImpresiones (PrintCount) se puede utilizar para identificar el número de veces que se ha evaluado la propiedad AlImprimir (OnPrint) para la sección actual de un informe.

Valores

Esta propiedad sólo se puede usar en una macro o un procedimiento de evento especificado por el valor de la propiedad AlImprimir (OnPrint) de la sección.

El valor de la propiedad NúmeroImpresiones (PrintCount) es del tipo de datos Largo.

Esta propiedad no está disponible en la vista Diseño del informe y es de sólo lectura en todos las demás vistas.

Comentarios

Microsoft Access incrementa la propiedad NúmeroImpresiones (PrintCount) cada vez que se evalúa el valor de la propiedad AlImprimir (OnPrint) para la sección actual. Cuando se imprime la sección siguiente, Microsoft Access restablece la propiedad NúmeroImpresiones (PrintCount) a 0.

La propiedad NúmeroImpresiones (PrintCount) se incrementa, por ejemplo, cuando la propiedad MantenerJuntos (KeepTogether) tiene el valor No para la sección actual y la sección se imprime en más de una página. Si se imprime un informe que contiene información sobre pedidos, se podría llevar un total actualizado de las cantidades de pedido. El ejemplo siguiente muestra cómo la propiedad NúmeroImpresiones (PrintCount) se puede utilizar para asegurarse de que el valor del control CantidadPedido se agrega sólo una vez al total actualizado:

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)

If PrintCount = 1 Then

TotalActualizado = TotalActualizado + CantidadPedido

End If

End Sub

En el ejemplo anterior, TotalActualizado puede ser una variable pública o el nombre de un control independiente que se incrementa cada vez que se imprime una sección.


Propiedad ModoDispImp (PrtDevMode)

La propiedad ModoDispImp (PrtDevMode) se puede utilizar para establecer o devolver información del modo del dispositivo de impresión que se ha especificado para un formulario o informe en el cuadro de diálogo Imprimir.

Nota   Se recomienda encarecidamente consultar el Kit de desarrollo de software de Win32 para tener una documentación completa de las propiedades ModoDispImp (PrtDevMode), PrtDevNames y PrtMip.

Valores

El valor de la propiedad ModoDispImp (PrtDevMode) es una estructura de 94 bytes que hace de espejo de la estructura DEVMODE definida en el Kit de desarrollo de software de Win32. Para obtener información completa acerca de los elementos de la propiedad ModoDispImp (PrtDevMode), consulte el Kit de desarrollo de software de Win32.

La propiedad ModoDispImp (PrtDevMode) consta de los siguientes elementos.

Elemento	Descripción
DeviceName	Una cadena con un máximo de 32 bytes que especifica el nombre del dispositivo que admite el controlador: por ejemplo, "HP LaserJet IIISi" si la impresora especificada es Hewlett-Packard LaserJet IIISi. Cada controlador de impresión tiene una cadena única.
SpecVersion	Un Entero que especifica el número de versión de la estructura DEVMODE en el Kit de desarrollo de software de Win32.
DriverVersion	Un Entero que especifica el número de versión del controlador de impresión asignado por el programador del controlador de impresión.
Size	Un Entero que especifica el tamaño, en bytes, de la estructura DEVMODE. (Este valor no incluye el elemento opcional dmDriverData para los datos específicos del dispositivo, que pueden seguir a esta estructura.) Si una aplicación manipula sólo la parte de los datos que es independiente del controlador, se puede utilizar este elemento para averiguar la longitud de la estructura sin tener que contar con diferentes versiones.
DriverExtra	Un Entero que especifica el tamaño, en bytes, del elemento opcional dmDriverData para los datos específicos del dispositivo, que pueden seguir a esta estructura. Si una aplicación no utiliza información específica del dispositivo, este elemento se debe establecer a 0.
Fields	Un valor de tipo Largo que especifica cuál de los elementos restantes de la estructura DEVMODE se ha inicializado. Puede ser cualquier combinación de constantes específicas o ninguna de ellas. Para las constantes disponibles, vea las constantes del elemento Fields.
Orientation	Un Entero que especifica la orientación del papel. Puede ser 1 (vertical) o 2 (horizontal).
PaperSize	Un Entero que especifica el tamaño del papel en el que se va a imprimir. Si se establece este elemento a 0 o 256, la longitud y ancho del papel están especificados en los elementos PaperLength y PaperWidth, respectivamente. De lo contrario, se puede establecer el elemento PaperSize a un valor predefinido. Para los valores disponibles, vea los valores del elemento PaperSize.
PaperLength	Un Entero que especifica la longitud del papel en unidades de 0,1 milímetros. Este elemento anula la longitud del papel especificada por el elemento PaperSize para los tamaños de papel personalizados o para dispositivos como las impresoras matriciales que pueden imprimir en diversos tamaños de papel.
PaperWidth	Un Entero que especifica el ancho del papel en unidades de 0,1 milímetros. Este elemento anula el ancho del papel especificado por el elemento PaperSize.
Scale	Un Entero que especifica el factor por el que se escalará la salida a impresión. El tamaño aparente de la página se escala a partir del tamaño físico de la página por un factor de escala/100. Por ejemplo, una hoja que mide 8,5 por 11 pulgadas (tamaño carta), con un valor de Escala de 50 contendría tantos datos como una hoja que midiera 17 por 22 pulgadas, porque el texto y los gráficos de salida tendrían la mitad del alto y ancho original.
Copies	Un Entero que especifica el número de copias impresas si el dispositivo de impresión admite copias de páginas múltiples.
DefaultSource	Un Entero que especifica la bandeja predeterminada de alimentación de papel. Para los valores disponibles, vea los valores del elemento DefaultSource.
PrintQuality	Un Entero que especifica la resolución de impresión: Los valores son –4 (alta), –3 (media), –2 (baja) y –1 (borrador).
Color	Un Entero. Para una impresora a color, especifica si la salida se imprime en color. Los valores son 1 (color) y 2 (monocromo).
Duplex	Un Entero. Para una impresora capaz de impresión dúplex, especifica si la salida se imprime en ambas caras del papel. Los valores son 1 (simple), 2 (horizontal) y 3 (vertical).
Yresolution	Un Entero que especifica la resolución y de la impresora en puntos por pulgada (ppp). Si la impresora inicializa este elemento, el elemento CalidadDeImpresión especifica la resolución x de la impresora en ppp.
TTOption	Un Entero que especifica cómo se imprimirán las fuentes TrueType. Para los valores disponibles, vea los valores del elemento TTOption.
Collate	Un Entero que especifica si se deben intercalar las copias cuando se imprimen copias múltiples. Utilizar copias no intercaladas proporciona una salida más eficiente y rápida, ya que los datos se envían a la impresora sólo una vez.
FormName	Una cadena con un máximo de 16 caracteres que especifica el tamaño del papel a utilizar; por ejemplo, "Carta" u "Oficio".
Pad	Un valor Largo que se utiliza para rellenar espacios, caracteres o valores para versiones futuras.
Bits	Un valor Largo que especifica en bits por píxel la resolución de color del dispositivo de presentación.
PW	Un valor Largo que especifica el ancho, en píxeles, de la superficie visible del dispositivo (pantalla o impresora).
PH	Un valor Largo que especifica el alto, en píxeles, de la superficie visible del dispositivo (pantalla o impresora).
DFI	Un valor Largo que especifica el modo de presentación del dispositivo.
DFR	Un valor Largo que especifica la frecuencia, en hertzios (ciclos por segundo), del dispositivo de presentación en un modo determinado.
La propiedad ModoDispImp (PrtDevMode) se puede establecer utilizando una Visual Basic.

El valor de esta propiedad es de lectura/escritura en la vista Diseño y de sólo lectura en las demás vistas.

Precaución   Los controladores de impresión pueden agregar datos específicos del dispositivo inmediatamente detrás de los 94 bytes de la estructura DEVMODE. Por esta razón, es importante que los datos de DEVMODE resumidos arriba no excedan los 94 bytes de datos.

Comentarios

Sólo los controladores de impresión que exportan la función ExtDeviceMode utilizan la estructura DEVMODE.

Una aplicación puede recuperar los tamaños y nombres del papel admitidos por una impresora utilizando los valores DC_PAPERS, DC_PAPERSIZE y DC_PAPERNAMES para llamar a la función DeviceCapabilities.

Antes de establecer el valor del elemento TTOption, las aplicaciones deben averiguar cómo puede utilizar una impresora las fuentes TrueType usando el valor DC_TRUETYPE para llamar a la función DeviceCapabilities.


Constantes del elemento Fields

Un controlador de impresión admite únicamente los elementos que admite la tecnología de la impresora.

Constante	Valor
DM_ORIENTATION	&H0000001
DM_PAPERSIZE	&H0000002
DM_PAPERLENGTH	&H0000004
DM_PAPERWIDTH	&H0000008
DM_SCALE	&H0000010
DM_COPIES	&H0000100
DM_DEFAULTSOURCE	&H0000200
DM_PRINTQUALITY	&H0000400
DM_COLOR	&H0000800
DM_DUPLEX	&H0001000
DM_YRESOLUTION	&H0002000
DM_TTOPTION	&H0004000
DM_COLLATE	&H0008000
DM_FORMNAME	&H0010000


Valores del elemento PaperSize

Valor	Tamaño del papel
1	Carta (216 x 279 mm)
2	Carta pequeña (216 x 279 mm)
3	Tabloide (279 x 432 mm)
4	Doble carta (432 x 280 mm)
5	Oficio (216 x 356 mm)
6	Estamento (140 x 216 mm)
7	Ejecutivo (195 x 254 mm)
8	A3 (297 x 420 mm)
9	A4 (210 x 297 mm)
10	A4 pequeña (210 x 297 mm)
11	A5 (148 x 210 mm)
12	B4 (250 x 354 mm)
13	B5 (182 x 257 mm)
14	Folio (216 x 330 mm)
15	Cuarto (215 x 275 mm)
16	11 x 17 pulgadas
18	Nota (216 x279 mm)
19	Sobre Nº 9 (980 x 225 mm)
20	Sobre Nº 10 (105 x 241 mm)
21	Sobre Nº 11 (114 x 264 mm)
22	Sobre Nº 12 (124 x 279 mm)
23	Sobre Nº 14 (127 x 292 mm)
24	Hoja tamaño C (17 x 22 pulg)
25	Hoja tamaño D (22 x 34 pulg)
26	Hoja tamaño E (34 x 44 pulg)
27	Sobre DL (110 x 220 mm)
28	Sobre C5 (162 x 229 mm)
29	Sobre C3 (324 x 458 mm.)
30	Sobre C4 (229 x 324 mm)
31	Sobre C6 (114 x 162 m.)
32	Sobre C65 (114 x 229 mm)
33	Sobre B4 (250 x 353 mm)
34	Sobre B5 (176 x 250 mm)
35	Sobre B6 (176 x 125 mm)
36	Sobre (110 x 230 mm)
37	Sobre Monarca (98 x 190 mm)
38	Sobre 6 3/4 (48 x 165 mm)
39	Continuo USA estándar (31 x 28 mm)
40	Continuo alemán estándar (216 x 305 mm)
41	Continuo alemán oficio (216 x 330 mm)
256	Definido por el usuario


Valores del elemento DefaultSource

Valor	Significado
1	Superior o sólo una bandeja
2	Bandeja inferior
3	Bandeja central
4	Bandeja manual
5	Bandeja de sobres
6	Bandeja manual de sobres
7	Bandeja automática
8	Bandeja de carro
9	Bandeja de formato pequeño
10	Bandeja de formato grande
11	Bandeja de gran capacidad
14	Bandeja de cassette
256	Las bandejas específicas del dispositivo comienzan aquí


Valores del elemento TTOption

Valor	Significado
1	Imprime las fuentes TrueType como gráficos. Es el valor predeterminado para las impresoras matriciales.
2	Carga las fuentes TrueType como fuentes programables (fuentes que se cargan en la memoria de la impresora para imprimir). Éste es el valor predeterminado para las impresoras Hewlett-Packard que utilizan el Lenguaje de Control de Impresoras PCL (Printer Control Language).
3	Sustituye las fuentes del dispositivo por fuentes TrueType. Éste es el valor predeterminado para las impresoras PostScript.


Ejemplo de la propiedad ModoDispImp (PrtDevMode)

En el ejemplo siguiente se utiliza la propiedad ModoDispImp (PrtDevMode) para comprobar el tamaño de página definido por el usuario para un informe:

Type cad_DEVMODE

RGB As String * 94

End Type

Type type_DEVMODE

cadNombreDispositivo As String * 16

entVersiónEspec As Integer

entVersiónControlador As Integer

entTamaño As Integer

entControladorExtra As Integer

lngCampos As Long

entOrientación As Integer

entTamañoPapel As Integer

entLongitudPapel As Integer

entAnchoPapel As Integer

entEscala As Integer

entCopias As Integer

entOrigenPredeterminado As Integer

entCalidadDeImpresión As Integer

entColor As Integer

entDúplex As Integer

entResolución As Integer

entOpciónTT As Integer

entIntercalar As Integer

cadNombreFormulario As String * 16

lngRelleno As Long

lngBits As Long

lngPW As Long

lngPH As Long

lngDFI As Long

lngDFr As Long

End Type

Sub CheckCustomPage (rptNombre As String)

Dim DevString As cad_DEVMODE

Dim DM As type_DEVMODE

Dim cadModoDispositivoExterno As String

Dim rpt As Report

Dim entRespuesta As Integer

' Abre el informe en la vista Diseño.

DoCmd.OpenReport rptNombre, acDesign

Set rpt = Reports(rptNombre)

If Not IsNull(rpt.PrtDevMode) Then

cadModoDispositivoExterno = rpt.PrtDevMode   ' Obtiene la estructura DEVMODE actual.

DevString.RGB = cadModoDispositivoExterno

LSet DM = DevString

If DM.entTamañoPapel = 256 Then

' Muestra el tamaño definido por el usuario.

entRespuesta = MsgBox("El tamaño personalizado actual de página es " _

& DM.entAnchoPapel / 254 & " pulgadas de ancho por " _

& DM.entLongitudPapel / 254 & " pulgadas de largo. ¿Desea cambiar " _

& "esta configuración?", 4)

Else

' No definido por el usuario actualmente.

entRespuesta = MsgBox("El informe no tiene un tamaño de página personalizado. " _

& "¿Desea definir uno?", 4)

End If

If entRespuesta = 6 Then

' El usuario desea cambiar la configuración.

' Inicializa los campos.

DM.lngCampos = DM.lngCampos Or DM.entTamañoPapel Or DM.entLongitudPapel _

Or DM.entAnchoPapel

DM.entTamañoPapel = 256	' Configura la página personalizada.

' Pregunta el largo y ancho.

DM.entLongitudPapel = InputBox("Introduzca el largo de la página " _

& "en pulgadas.") * 254

DM.entAnchoPapel = InputBox("Introduzca el ancho de la página " _

& "en pulgadas.") * 254

LSet DevString = DM	' Actualiza la propiedad.

Mid(cadModoDispositivoExterno, 1, 94) = DevString.RGB

rpt.PrtDevMode = cadModoDispositivoExterno

End If

End If

End Sub

El siguiente ejemplo muestra cómo cambiar la orientación del informe. Este ejemplo cambiará la orientación de vertical a horizontal o viceversa, dependiendo de la orientación actual del informe.

Sub SwitchOrient(cadNombre As String)

Const DM_PORTRAIT = 1

Const DM_LANDSCAPE = 2

Dim DevString As cad_DEVMODE

Dim DM As type_DEVMODE

Dim cadModoDispositivoExterno As String

Dim rpt As Report

DoCmd.OpenReport cadNombre, acDesign	' Abre el informe en la vista Diseño.

Set rpt = Reports(cadNombre)

If Not IsNull(rpt.PrtDevMode) Then

cadModoDispositivoExterno = rpt.PrtDevMode

DevString.RGB = cadModoDispositivoExterno

LSet DM = DevString

DM.lngCampos = DM.lngCampos Or DM.entOrientación	' Inicializa los campos.

If DM.entOrientación = DM_PORTRAIT Then

DM.entOrientación = DM_LANDSCAPE

Else

DM.entOrientación = DM_PORTRAIT

End If

LSet DevString = DM	' Actualiza la propiedad.

Mid(cadModoDispositivoExterno, 1, 94) = DevString.RGB

rpt.PrtDevMode = cadModoDispositivoExterno

End If

End Sub


Propiedad PrtDevNames

La propiedad PrtDevNames se puede utilizar para establecer o devolver información sobre la impresora seleccionada en el cuadro de diálogo Imprimir para un formulario o informe.

Nota   Se recomienda encarecidamente consultar el Kit de desarrollo de software de Win32 para tener una documentación completa sobre las propiedades ModoDispImp (PrtDevMode), PrtDevNames y PrtMip.

Valores

La propiedad PrtDevNames es una estructura de longitud variable que sirve de espejo de la estructura DEVNAMES definida en el Kit de desarrollo de software de Win32.

La propiedad PrtDevNames consta de los siguientes elementos.

Elemento	Descripción
DriverOffset	Especifica el desplazamiento desde el comienzo de la estructura a una cadena terminada en Null que especifica el nombre de archivo (sin extensión) del controlador del dispositivo. Esta cadena se utiliza para especificar qué impresora se muestra inicialmente en el cuadro de diálogo Imprimir.
DeviceOffset	Especifica el desplazamiento desde el comienzo de la estructura a la cadena terminada en Null que especifica el nombre del dispositivo. Esta cadena no puede tener más de 32 bytes (incluido el carácter nulo) y tiene que ser idéntica al elemento DeviceName de la estructura DEVMODE.
OutputOffset	Especifica el desplazamiento desde el comienzo de la estructura a la cadena terminada en Null que especifica el nombre del dispositivo en MS-DOS para el medio físico de salida (puerto de salida); por ejemplo, "LPT1:".
Default	Especifica si las cadenas especificadas en la estructura DEVNAMES identifican la impresora predeterminada. Antes de mostrar el cuadro de diálogo Imprimir, si Default está establecido a 1 y el resto de los valores de la estructura DEVNAMES coincide con la impresora predeterminada actual, la impresora seleccionada se establece a la impresora predeterminada. Default está establecido a 1 si ha sido seleccionada la impresora predeterminada actual.
Microsoft Access establece la propiedad PrtDevNames cuando se selecciona alguna opción de la sección Impresora del cuadro de diálogo Imprimir. También se puede establecer esta propiedad usando Visual Basic.

Comentarios

Microsoft Access utiliza la estructura DEVNAMES para inicializar el cuadro de diálogo Imprimir. Cuando el usuario selecciona Aceptar para cerrar el cuadro de diálogo, la información acerca de la impresora seleccionada es devuelta por la propiedad PrtDevNames.


Propiedad PrtMip

La propiedad PrtMip se puede utilizar en Visual Basic para establecer o devolver la información de modo del dispositivo, especificada para un formulario o informe en el cuadro de diálogo Imprimir.

Valores

El valor de la propiedad PrtMip es una estructura de 28 bytes que asigna a los valores de la ficha Márgenes para un formulario o informe en el cuadro de diálogo Configurar página.

La propiedad PrtMip consta de los siguientes elementos.

Elemento	Descripción
LeftMargin, RightMargin, TopMargin, BottomMargin	Un Entero que especifica la distancia entre el borde de la página y el elemento a imprimir en twips.
DataOnly	Un Entero que especifica los elementos a imprimir. Cuando tiene el valor True (–1), imprime sólo los datos en una tabla o consulta en la vista Hoja de datos, formulario o informe y suprime las etiquetas, bordes de control, líneas de la cuadrícula y gráficos de presentación, como líneas y cuadros. Cuando tiene el valor False (0), imprime datos, etiquetas y gráficos.
ItemsAcross	Un Entero que especifica el número de columnas a lo ancho para informes o etiquetas de columnas múltiples. Este elemento equivale al valor del cuadro Número de columnas en la sección Opciones de la cuadrícula de la ficha Columnas del cuadro de diálogo Configurar página.
RowSpacing	Un Entero que especifica el espacio horizontal que hay entre las secciones de detalle en unidades de 1/20 de punto.
ColumnSpacing	Un Entero que especifica el espacio vertical que hay entre las secciones de detalle en twips.
DefaultSize	Un Entero. Cuando tiene el valor True, usa el tamaño de la sección de detalle de la vista Diseño. Cuando tiene el valor False, usa los valores especificados por los elementos ItemSizeWidth y ItemSizeHeight.
ItemSizeWidth	Un Entero que especifica el ancho de la sección de detalle en twips. Este elemento equivale al valor del cuadro Ancho en la sección Tamaño de columna de la ficha Columnas del cuadro de diálogo Configurar página.
ItemSizeHeight	Un Entero que especifica el alto de la sección de detalle en twips. Este elemento equivale al valor del cuadro Alto en la sección Tamaño de columna de la ficha Columnas del cuadro de diálogo Configurar página.
ItemLayout	Un Entero que especifica diseño horizontal (1953) o vertical (1954) de las columnas. Este elemento equivale a las opciones A lo ancho y después hacia abajo o Hacia abajo y después a lo ancho, respectivamente, en la sección Diseño de columna de la ficha Columnas del cuadro de diálogo Configurar página.
FastPrinting	Reservado.
Datasheet	Reservado.
El valor de la propiedad PrtMip es de lectura/escritura en la vista Diseño y de sólo lectura en las demás vistas.


Ejemplo de la propiedad PrtMip

El siguiente ejemplo de la propiedad PrtMip muestra cómo configurar el informe con dos columnas horizontales.

Type cad_PRTMIP

cadRGB As String * 28

End Type

Type type_PRTMIP

entMargenIzquierdo As Integer

entMargenSuperior As Integer

entMargenDerecho As Integer

entMargenInferior As Integer

entSóloDatos As Integer

entAncho As Integer

entAlto As Integer

entTamañoPredeterminado As Integer

entColumnas As Integer

entEspacioColumna As Integer

entEspacioFila As Integer

entDiseñoElemento As Integer

entFastPrinting As Integer

entDatasheet As Integer

End Type

Sub PrtMipCols(cadNombre As String)

Dim PrtMipString As cad_PRTMIP

Dim PM As type_PRTMIP

Dim rpt As Report

Const PM_HORIZONTALCOLS = 1953

Const PM_VERTICALCOLS = 1954

DoCmd.OpenReport cadNombre, acDesign

Set rpt = Reports(cadNombre)

PrtMipString.cadRGB = rpt.PrtMip

LSet PM = PrtMipString

PM.entColumnas = 2	' Crea dos columnas.

PM.entEspacioFila = 0.25 * 1440	' Establece 0,25 pulgadas entre filas.

PM.entEspacioColumna = 0.5 * 1440	' Establece 0,5 pulgadas entre columnas.

PM.entDiseñoElemento = PM_HORIZONTALCOLS

LSet PrtMipString = PM	' Actualiza la propiedad.

rpt.PrtMip = PrtMipString.cadRGB

End Sub

El siguiente ejemplo de la propiedad PrtMip muestra cómo establecer los márgenes a 1 pulgada.

Sub SetsMarginsToDefaults(cadNombre As String)

Dim PrtMipString As cad_PRTMIP

Dim PM As type_PRTMIP

Dim rpt As Report

DoCmd.OpenReport cadNombre, acDesign

Set rpt = Reports(cadNombre)

PrtMipString.cadRGB = rpt.PrtMip

LSet PM = PrtMipString

PM.entMargenIzquierdo = 1 * 1440	' Establece los márgenes.

PM.entMargenSuperior = 1 * 1440

PM.entMargenDerecho = 1 * 1440

PM.entMargenInferior = 1 * 1440

LSet PrtMipString = PM	' Actualiza la propiedad.

rpt.PrtMip = PrtMipString.cadRGB

End Sub


Propiedad Alias

La propiedad Alias se puede utilizar para especificar un nombre personalizado para una tabla o consulta de origen cuando se utiliza la misma tabla o consulta más de una vez en la misma consulta.

Nota   La propiedad Alias se aplica sólo a tablas o consultas cuando éstas se utilizan como origen de los datos de una consulta.

Valores

Se puede utilizar una expresión de cadena para establecer la propiedad Alias a cualquier nombre que no se esté utilizando actualmente en la base de datos. Esta propiedad se establece en la vista Diseño de la consulta haciendo clic con el botón secundario del mouse en la lista de campos de la cuadrícula de diseño de la consulta y haciendo clic en Propiedades.

Se puede establecer la propiedad Alias en la vista SQL de la ventana Consulta utilizando una cláusula AS en la instrucción SQL.

Comentarios

Es necesario utilizar un alias cuando se crea una autocombinación en una instrucción SQL.

Cuando se agrega una tabla o consulta a una consulta, Microsoft Access establece automáticamente la propiedad Alias al nombre de la tabla o consulta. Si se agrega una segunda instancia de la misma tabla o consulta, Microsoft Access establece la propiedad Alias al nombre del objeto más un carácter de subrayado y un 1 ("_1").

Al crear un alias no se modifica el nombre de la tabla o consulta, únicamente se especifica otro nombre para hacer referencia a la tabla o consulta. Por ejemplo, en una consulta que contiene una autocombinación que muestra los empleados y sus gerentes, podría usar dos copias de la tabla Empleados. Microsoft Access llama automáticamente a la tabla duplicada Empleados_1. Para dar a esta tabla un nombre más significativo, se podría establecer su propiedad Alias a Gerentes.


Ejemplo de la propiedad Alias

En el ejemplo siguiente se establece la propiedad OrigenDelRegistro (RecordSource) de un formulario a una instrucción SQL que utiliza la cláusula AS para especificar Gerentes como alias de la tabla Empleados.

Dim cadGetSQL AS String

cadGetSQL = "SELECT Empleados.Nombre, Empleados.Apellido, " _

& "Empleados.Cargo, Gerentes.Nombre, Gerentes.Apellido FROM Empleados " _

& "INNER JOIN Empleados AS Gerentes " _

& "ON Empleados.Jefe = Gerentes.IdEmpleado; "

Forms!Form1.RecordSource = cadGetSQL

En el ejemplo siguiente se utiliza una autocombinación para mostrar los empleados y sus gerentes. Se utiliza una cláusula AS para establecer la propiedad Alias de la tabla Empleados duplicada a Gerentes. La siguiente instrucción SQL se introduce en la vista SQL de la ventana Consulta.

SELECT Empleados.Nombre, Empleados.Apellido, Empleados.Cargo, Directores.Nombre, Directores.Apellido

FROM Empleados INNER JOIN Empleados AS Gerentes

ON Empleados.Jefe = Directores.IdEmpleado;


Propiedad Títulos de columna (ColumnHeadings)

La propiedad Títulos de columna (ColumnHeadings) se puede utilizar para especificar el orden o para limitar el número de columnas que aparecen en una consulta de tabla de referencias cruzadas. Por ejemplo, en una consulta que muestra nombres de países, quizás desee mostrarlos en un orden específico, como primero Estados Unidos, segundo Canadá y tercero el Reino Unido.

Valores

Los valores de los datos del campo Encabezado de columna de la consulta de tabla de referencias cruzadas se introducen como una expresión de cadena en el orden en que se desea presentar los encabezados en la hoja de datos para la consulta de tabla de referencias cruzadas, separados por una coma (o el separador de lista establecido en el cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows). La tabla siguiente muestra algunos ejemplos de valores de la propiedad Títulos de columna (ColumnHeadings) y el resultado en la hoja de datos de la consulta de tabla de referencias cruzadas.

Valor	Resultado
"Trimestre 1", "Trimestre 2", "Trimestre 3", "Trimestre 4"	Muestra encabezados de columnas para cada trimestre.
"México", "Canadá", "USA"	Muestra encabezados de columnas para cada país.
Esta propiedad se puede establecer utilizando la hoja de propiedades de la consulta. También se puede establecer en la vista SQL de la ventana Consulta o en Visual Basic utilizando una cláusula PIVOT en la instrucción SQL.

Nota   Los encabezados de columna que se especifiquen para la propiedad Títulos de columna (ColumnHeadings) tienen que coincidir exactamente con los valores de los datos del campo Encabezado de columna de la cuadrícula de diseño de consulta. De lo contrario, los datos no aparecerán en las columnas.

Comentarios

La propiedad Títulos de columna (ColumnHeadings) se utiliza para obtener más control sobre la apariencia de los encabezados de columna en una consulta de tabla de referencias cruzadas. De forma predeterminada, Microsoft Access muestra todos los valores de los datos de encabezados de columna en orden ascendente. Por ejemplo, si el nombre del campo Encabezado de columna es Mes, los encabezados de columna predeterminados que se muestran serán Abril, Agosto, Diciembre, Febrero, etc. La propiedad Títulos de columna (ColumnHeadings) se puede utilizar para mostrar los datos en el orden correcto con los valores apropiados: "Enero", "Febrero", "Marzo", etc.

Si se incluye un encabezado de columna en el valor de la propiedad Títulos de columna (ColumnHeadings), la columna siempre aparece en la vista Hoja de datos de la consulta aunque no contenga ningún dato. Esto es útil para los informes basados en una consulta de tabla de referencias cruzadas, por ejemplo cuando siempre se desea mostrar los mismos encabezados de columna en el informe.

Sugerencia   La propiedad Títulos de columna (ColumnHeadings) se puede utilizar para aumentar la velocidad de algunas consultas de tablas de referencias cruzadas limitando el número de columnas que aparecen.


Ejemplo de la propiedad Títulos de columna (ColumnHeadings)

En el ejemplo siguiente se crean cuatro encabezados de columna (Trimestre 1, Trimestre 2, Trimestre 3, Trimestre 4) en la vista Hoja de datos de una consulta de tabla de referencias cruzadas que lista los pedidos trimestrales por producto. La instrucción siguiente se introduce en la vista SQL de la ventana Consulta.

TRANSFORM Sum(CCur([Detalles de pedido].PrecioUnidad * [Detalles de pedido].Cantidad * (1-[Descuento])/100) * 100)

AS CantidadProducto SELECT Productos.NombreProducto FROM Productos

INNER JOIN (Pedidos INNER JOIN [Detalles de pedido] ON Pedidos.IdPedido = [Detalles de pedido].IdPedido)

ON Productos.IdProducto = [Detalles de pedido].IdProducto

WHERE (((Pedidos.FechaEnvío) Between #1/1/94# And #12/31/94#))

GROUP BY Productos.NombreProducto PIVOT "Trimestre " & DatePart("t",[FechaEnvío],1,0);


Propiedad Mostrar todos los campos (OutputAllFields)

La propiedad Mostrar todos los campos (OutputAllFields) se puede utilizar para mostrar todos los campos que hay en el origen de datos base de una consulta y en la lista de campos de un formulario o informe. Establecer esta propiedad es una forma fácil de mostrar todos los campos sin tener que hacer clic en el cuadro Mostrar de la cuadrícula de diseño de una consulta para cada campo de la consulta.

Nota   La propiedad Mostrar todos los campos (OutputAllFields) se aplica sólo a las consultas de datos anexados, de creación de tabla y de selección.

Valores

La propiedad Mostrar todos los campos (OutputAllFields) puede tener los siguientes valores.

Valor	Descripción
Sí	Muestra todos los campos de las tablas bases en la lista de campos de un formulario o informe.
No	(Predeterminado) Muestra sólo los campos que tienen seleccionado el cuadro Mostrar en la cuadrícula de diseño de consulta.
Sólo se puede establecer esta propiedad utilizando la hoja de propiedades de la consulta.

Nota   Utilizar un asterisco (*) en una instrucción SQL en lugar de un nombre de campo es equivalente a establecer la propiedad Mostrar todos los campos (OutputAllFields) a Sí.

Comentarios

Cuando la propiedad Mostrar todos los campos (OutputAllFields) tiene el valor Sí, los únicos campos que hay que incluir en la cuadrícula de diseño de la consulta son aquéllos que se desea ordenar o para los que se desea establecer criterios.

Cuando se guarda un filtro como una consulta, Microsoft Access establece la propiedad Mostrar todos los campos (OutputAllFields) a Sí.


Ejemplo de la propiedad Mostrar todos los campos (OutputAllFields)

En el ejemplo siguiente se utiliza un asterisco en una instrucción SQL para seleccionar todos los campos de la tabla Compañías de envíos. Luego se muestran los campos en cuadros de texto de un formulario estableciendo la propiedad OrigenDelControl (ControlSource) de los cuadros de texto a los nombres de los campos individuales de la consulta.

Dim cadGetSQL AS String

cadGetSQL = "SELECT * FROM [Compañías de envíos]"

Forms!Form1.RecordSource = cadGetSQL

Texto1.ControlSource = "IdCompañíaEnvíos"

Texto2. ControlSource = "NombreCompañía"

En el resultado de la siguiente instrucción SQL, los valores de los campos NombreCompañía y NombreProducto se clasifican en orden ascendente y todos los campos de las tablas Proveedores y Productos se muestran en las listas de campos y en la vista Hoja de datos. Esta instrucción SQL se introduce en la vista SQL de la ventana Consulta.

SELECT * FROM Proveedores INNER JOIN Productos

ON Proveedores.[IdProveedor] = Productos.[IdProveedor]

ORDER BY Proveedores.[NombreCompañía], Productos.[NombreProducto];


Propiedad Devuelve registros (ReturnsRecords)

La propiedad Devuelve registros (ReturnsRecords) se puede utilizar en una consulta de paso a través de SQL para especificar si la consulta devuelve registros. Por ejemplo, si la consulta de paso a través es SELECT * FROM EMPLEADOS, se puede establecer la propiedad Devuelve registros (ReturnsRecords) a Sí para mostrar todos los registros de empleados que hay en la hoja de datos de la consulta.

Nota   La propiedad Devuelve registros (ReturnsRecords) se aplica sólo a las consultas de paso a través.

Valores

La propiedad Devuelve registros (ReturnsRecords) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	(Predeterminado) La consulta devuelve registros (igual que una consulta de selección).	True (–1)
No	La consulta no devuelve registros (igual que una consulta de acciones).	False (0)
Esta propiedad se puede establecer utilizando la hoja de propiedades de la consulta o Visual Basic.

Sugerencia   Se puede tener acceso a la propiedad Devuelve registros (ReturnsRecords) de una consulta de paso a través desde Visual Basic, pero el mejor método es utilizar la propiedad ReturnsRecords de objetos de acceso a datos (DAO).

Comentarios

Una consulta de paso a través puede devolver registros o se puede utilizar para modificar datos, crear un objeto de base de datos o ejecutar una acción igual que en una consulta de acciones.

Cuando se establece la propiedad Devuelve registros (ReturnsRecords) a Sí, se puede utilizar la consulta de paso a través en otra consulta o como base para un cuadro combinado, cuadro de lista, formulario o informe. Si se establece la propiedad Devuelve registros (ReturnsRecords) a No, no se puede utilizar la consulta como base para un objeto o control porque no se devuelven registros.


Propiedad Permisos de ejecución

La propiedad Permisos de ejecución se puede utilizar en un entorno multiusuario con un grupo de trabajo protegido para que no tengan efecto los permisos de usuario existentes. Esto permite ver una consulta o ejecutar una consulta de datos anexados, de eliminación, de creación de tabla o actualización para las que no se tendría permiso de ejecución de otra forma. Por ejemplo, como usuario se puede tener permiso de sólo lectura para consultas, mientras el propietario de las consultas tiene permiso de lectura/escritura. Si el propietario establece la propiedad Permisos de ejecución para especificar los permisos de propietario, se puede ejecutar una consulta de datos anexados para agregar registros a una tabla.

Valores

La propiedad Permisos de ejecución puede tener los valores siguientes.

Valor	Descripción
Del propietario	Todos los usuarios tienen permisos de propietario para ver o ejecutar la consulta.
Del usuario	(Predeterminado) Los usuarios sólo tienen sus propios permisos para ver o ejecutar la consulta.
Esta propiedad se puede establecer utilizando la hoja de propiedades de la consulta.

También se puede establecer la propiedad Permisos de ejecución en la vista SQL de la ventana Consulta utilizando la declaración WITH OWNERACCESS OPTION en una instrucción SQL.


Ejemplo de la propiedad Permisos de ejecución

El ejemplo siguiente es una consulta de selección basada en la tabla Categorías que permite a todos los usuarios tener permisos de propietario para la consulta. Esta instrucción SQL se introduce en la vista SQL de la ventana Consulta.

SELECT Categorías.IdCategoría, Categorías.NombreCategoría, Categorías.Descripción

FROM Categorías WITH OWNERACCESS OPTION;


Propiedad Origen

La propiedad Origen se puede utilizar para especificar la cadena de conexión y una base de datos para la tabla o consulta de origen de una consulta. Es necesario utilizarla cuando se tiene acceso a los datos de una tabla externa sin vincular la tabla.

Sugerencia   Utilizar la propiedad Origen y la propiedad Cadena de conexión del origen para tener acceso a tablas ODBC es mucho más lento que utilizar tablas vinculadas.

Valores

La propiedad Origen se establece utilizando una expresión de cadena. Esta propiedad no se puede establecer en código directamente. Se establece cuando se crea una nueva consulta utilizando una instrucción SQL. La cláusula FROM de la instrucción SQL corresponde al valor de la propiedad Origen.

Los ejemplos siguientes muestran cómo se puede utilizar la propiedad Origen para conectar varios tipos diferentes de bases de datos.

Tipo de base de datos	Especifique	Valor de ejemplo
Microsoft Access	Ruta de acceso y nombre de la base de datos. Microsoft Access agrega la extensión de nombre de archivo automáticamente.	C:\Accts\Clientes
dBASE	Tipo de la base de datos y ruta de acceso. Para una lista de especificadores, vea la propiedad Connect de objetos de acceso a datos (DAO).	DBASE IV;DatabaseTable=C:\DBDATA
SQL Server (ODBC)	Nombre de la base de datos de origen y cualquier información adicional requerida por el producto, como identificador (Id) de inicio de sesión y contraseña. También se puede utilizar el Generador de cadena de conexión ODBC para crear la cadena de conexión.	ODBC;DSN=salessrv;UID=jace; PWD=contraseña;DATABASE=ventas;
Esta propiedad se puede establecer utilizando la hoja de propiedades de lista de campos de una consulta.

También se puede establecer en la vista SQL de la ventana Consulta utilizando las cláusulas FROM e IN en una instrucción SQL.

Comentarios

Cuando todas las tablas de origen de una consulta proceden de la misma base de datos externa, utilice las propiedades Cadena de conexión del origen y Base de datos de origen de la consulta en lugar de establecer la propiedad Origen para cada tabla o consulta de origen.


Ejemplo de la propiedad Origen

En el ejemplo siguiente se establece la propiedad OrigenDeLaFila (RowSource) para el control cuadro de lista ListaContactos a un campo de una tabla de dBASE IV.

Dim cadGetSQL AS String

cadGetSQL = "SELECT Cliente.NOMCOMPAÑÍA, Cliente.TELÉFONO FROM Cliente IN 'c:\dbdata'[dBASE IV;];"

Me.ListaContacto.RowSource = cadGetSQL

En el ejemplo siguiente, el origen de los datos para la consulta es una tabla de dBASE IV llamada Cliente de la carpeta C:\Dbdata. Esta instrucción SQL se puede introducir en la vista SQL de una ventana Consulta.

SELECT Cliente.NOMCOMPAÑÍA, Cliente.TELÉFONO

FROM Cliente IN 'c:\dbdata'[dBASE IV;];


Propiedad Valores superiores

La propiedad Valores superiores se puede utilizar para devolver un número especificado de registros o un porcentaje de registros que cumplen los criterios que se especifiquen. Por ejemplo, se podrían devolver los 10 valores superiores o el 25 por ciento más alto de todos los valores de un campo.

Nota   La propiedad Valores superiores se aplica sólo a las consultas de datos anexados, creación de tabla y selección.

Valores

El valor de la propiedad Valores superiores es un valor de tipo Entero que representa el número exacto de valores que devuelve o un número seguido de un signo de tanto por ciento (%) que representa el porcentaje de registros que devuelve. Por ejemplo, para devolver los 10 valores superiores, se establece la propiedad Valores superiores a 10; para devolver el 10 por ciento más alto de valores, la propiedad Valores superiores se establece a 10%.

Esta propiedad no se puede establecer en el código directamente. Se establece en la vista SQL de la ventana Consulta utilizando una cláusula TOP n o TOP n PERCENT en una instrucción SQL.

También se puede establecer la propiedad Valores superiores utilizando la hoja de propiedades de la consulta o el cuadro Valores superiores [image] de la barra de herramientas Diseño de consulta.

Nota   La propiedad Valores superiores de la hoja de propiedades de la consulta y de la barra de herramientas Diseño de consulta es un cuadro combinado que contiene una lista de valores y porcentajes. Se puede seleccionar uno de estos valores o escribir cualquier valor válido en la parte de texto de este control.

Comentarios

Normalmente, el valor de la propiedad Valores superiores se utiliza con campos ordenados. El campo cuyos valores superiores se desea mostrar debería ser el campo que está más a la izquierda, que tiene la casilla Ordenar seleccionada en la cuadrícula de diseño de la consulta. Un orden ascendente devuelve los registros que están más abajo y un orden descendente devuelve los registros que están más arriba. Si se especifica que se devuelva un número específico de registros, se devuelven también todos los registros con valores que coinciden con el valor del último registro.

Por ejemplo, supongamos que un conjunto de empleados tiene los totales de ventas siguientes.

Ventas	Vendedor
90.000	García
80.000	Ramírez
70.000	López
70.000	Pérez
60.000	Gómez
50.000	Vázquez
Si se establece la propiedad Valores superiores a 3 con un orden descendente en el campo Ventas, Microsoft Access devuelve los cuatro registros siguientes.

Ventas	Vendedor
90.000	García
80.000	Ramírez
70.000	López
70.000	Pérez
Nota   Para devolver los valores más altos o más bajos sin mostrar valores duplicados, establezca la propiedad Valores únicos a Sí en la hoja de propiedades de la consulta.


Ejemplo de la propiedad Valores superiores

En el ejemplo siguiente se asigna una cadena SQL que devuelve los 10 productos más caros, y los asigna a la propiedad OrigenDelRegistro (RecordSource) de un formulario que mostrará estos diez productos más caros.

Dim cadGetSQL As String

cadGetSQL = "SELECT TOP 10 Productos.[NombreProducto] " _

& "AS DiezProductosMásCaros, Productos.PrecioUnidad FROM Productos " _

& "ORDER BY Productos.[PrecioUnidad] DESC;"

Me.RecordSource = cadGetSQL


Propiedades Cadena de conexión del destino, Base de datos de destino y Tabla de destino

•	La propiedad Base de datos de destino especifica el tipo de aplicación que se utiliza para crear una base de datos externa.

•	La propiedad Cadena de conexión del destino especifica la cadena de conexión para el nombre de la base de datos que contendrá la tabla nueva (para las consultas de creación de tabla) o el nombre de la base de datos que contiene la tabla a la que se van a agregar los datos (para las consultas de datos anexados).

•	La propiedad Tabla de destino especifica el nombre de la tabla que tendrá los resultados de la consulta de creación de tabla o de datos anexados.

Nota   Las propiedades Cadena de conexión del destino, Base de datos de destino y Tabla de destino se aplican sólo a las consultas de creación de tabla y datos anexados.

Valores

Las propiedades Cadena de conexión del destino, Base de datos de destino y Tabla de destino se establecen utilizando una expresión de cadena.

El valor predeterminado para la propiedad Base de datos de destino es "(actual)", que hace referencia a la base de datos que está activa actualmente.

Estas propiedades se pueden establecer en la hoja de propiedades de la consulta o en la vista SQL de la ventana Consulta.

En la instrucción SQL de una consulta de datos anexados, el nombre de tabla de la instrucción INSERT INTO corresponde al valor de la propiedad Tabla de destino. La cláusula IN corresponde al valor de las propiedades Base de datos de destino y Cadena de conexión del destino.

En la instrucción SQL para una consulta de creación de tabla, el nombre de tabla de la cláusula INTO corresponde al valor de la propiedad Tabla de destino. La cláusula IN corresponde al valor de las propiedades Base de datos de destino y Cadena de conexión del destino.

Nota   Microsoft Access establece estas propiedades automáticamente basándose en la información que se introduce en la hoja de propiedades de la consulta o en la vista SQL de la ventana Consulta.

Comentarios

Cuando se hace clic en Crear tabla o Agregar del menú Consulta, Microsoft Access pregunta la información necesaria para establecer estas propiedades. Microsoft Access utiliza el valor que se introduce en el cuadro Nombre de la tabla para establecer la propiedad Tabla de destino y utiliza la información que se introduce en el cuadro Nombre de archivo para establecer las propiedades Base de datos de destino y Cadena de conexión del destino.

Para utilizar la hoja de propiedades de la consulta para especificar una tabla de una base de datos de Microsoft Access, escriba el nombre de la tabla en el cuadro de la propiedad Tabla de destino (por ejemplo, Clientes). En el cuadro de la propiedad Base de datos de destino, escriba la ruta de acceso y el nombre de la base de datos sin la extensión de nombre de archivo (por ejemplo, C:\Cuentas\Clientes). Microsoft Access agrega la extensión automáticamente. No es necesario establecer la propiedad Cadena de conexión del destino.

Para especificar una tabla de una base de datos creada con un producto diferente, como por ejemplo Paradox, escriba el nombre de la tabla en el cuadro de la propiedad Tabla de destino. En el cuadro de la propiedad Base de datos de destino, escriba la ruta de acceso (por ejemplo, C:\Pdoxdata). En el cuadro de la propiedad y Cadena de conexión del destino, escriba el especificador para el tipo de base de datos (por ejemplo, Paradox 3.x). Si desea tener una lista de especificadores, vea la propiedad Connect de objetos de acceso a datos (DAO).

Para especificar una base de datos ODBC (Conectividad de base de datos abierta), escriba el nombre de la base de datos en el cuadro de la propiedad y Cadena de conexión del destino junto con información adicional, como el identificador (Id) de inicio de sesión y la contraseña, si lo requiere el producto. Por ejemplo, podría utilizar la configuración siguiente para una base de datos de Microsoft SQL Server:

ODBC;DSN=salessrv;UID=jace;PWD=contraseña;DATABASE=ventas;

Para más información acerca de los controladores ODBC, como Microsoft SQL Server, vea la Ayuda suministrada con el controlador.

No hace falta establecer la propiedad Base de datos de destino para las bases de datos ODBC.

Para más información acerca de la forma de tener acceso a los datos de las bases de datos ODBC, vea el capítulo 18, "Acceso a datos externos," de Creación de aplicaciones con Microsoft Access 97.


Ejemplo de las propiedades Cadena de conexión del destino, Base de datos de destino y Tabla de destino

En el ejemplo siguiente se anexan los registros de la tabla Cliente a la tabla Clientes de una base de datos de Microsoft Access llamada Clientes que está en el directorio C:\Datos. Esta instrucción SQL se introduce en la vista SQL de la ventana Consulta.

INSERT INTO Clientes IN 'C:\Datos\Clientes.mdb'

SELECT Cliente.[NombreCompañía], Cliente.Teléfono

FROM Cliente;

En el ejemplo siguiente se crea una nueva tabla llamada Contactos en una base de datos de Paradox versión 3.x que está en el directorio C:\Pdoxdata.

SELECT Cliente.NombreCompañía, Cliente.Teléfono

INTO Contactos IN 'C:\Pdoxdata' [Paradox 3.x;] FROM Cliente;


Propiedad Anotar mensajes (LogMessages)

La propiedad Anotar mensajes (LogMessages) se puede utilizar en una consulta de paso a través de SQL para especificar si los mensajes que devuelve una base de datos SQL se almacenan en una tabla de mensajes de la base datos actual de Microsoft Access.

Nota   La propiedad Anotar mensajes (LogMessages) se aplica sólo a las consultas de paso a través.

Valores

La propiedad Anotar mensajes (LogMessages) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	Microsoft Access almacena los mensajes devueltos de la base de datos SQL en una tabla de mensajes.	Verdadero (True) (–1)
No	(Predeterminado) Microsoft Access no almacena los mensajes devueltos de la base de datos SQL.	Falso (False) (0)
Esta propiedad se puede establecer utilizando la hoja de propiedades de la consulta o Visual Basic.

Comentarios

El nombre de la tabla de mensajes donde se almacenan los mensajes devueltos, es nombreusuario - nn, donde nombreusuario es el nombre de inicio de sesión del usuario que está ejecutando la consulta de paso a través, y nn en un entero que aumenta en incrementos de 1, comenzando en 00. Por ejemplo, si el usuario JuanV establece la propiedad Anotar mensajes (LogMessages) a Sí y recibe mensajes desde una base de datos SQL, la tabla de mensajes se llamará JuanV - 00. Si JuanV recibe mensajes en otra sesión de Microsoft Access (y no se ha borrado la primera tabla), se crea una nueva tabla llamada JuanV - 01.

Nota   No se almacenan los mensajes de error de SQL Server en la tabla de mensajes.


Propiedad Cadena de conexión ODBC (ODBCConnectString)

La propiedad Cadena de conexión ODBC (ODBCConnectString) se puede utilizar en una consulta de paso a través de SQL para especificar una cadena de conexión ODBC (Conectividad de base de datos abierta) para la consulta.

Nota   La propiedad Cadena de conexión ODBC (ODBCConnectString) se aplica sólo a las consultas de paso a través.

Valores

Escriba la cadena de conexión ODBC que define la conexión a la base de datos SQL que desea utilizar.

Esta propiedad se puede establecer utilizando la hoja de propiedades de la consulta o Visual Basic.

También se puede utilizar el Generador de cadena de conexión ODBC para crear la cadena de conexión ODBC de esta propiedad. Este generador establece una conexión con el servidor de bases de datos SQL y finaliza la conexión después de haber creado la cadena de conexión ODBC.

Comentarios

El valor predeterminado de esta propiedad es la cadena "ODBC;", que Microsoft Access restaura si se borra un valor existente. Cuando la propiedad Cadena conexión ODBC (ODBCConnectString) está establecida a "ODBC," Microsoft Access pedirá una cadena de conexión siempre que se utilice la consulta, pero no almacenará la cadena de conexión. Si se desea que Microsoft Access almacene la cadena de conexión, hay que introducir una cadena de conexión en el cuadro de la propiedad Cadena conexión ODBC (ODBCConnectString).

Sugerencia   Si sabe la cadena de conexión completa de una base de datos SQL, escríbala en el cuadro de la propiedad Cadena conexión ODBC (ODBCConnectString). De esta forma evitará tener que escribir la cadena de conexión en el cuadro de diálogo de conexión ODBC cada vez que utilice la consulta.

La cadena de conexión es diferente para tipos distintos de orígenes de datos ODBC. Por ejemplo, para conectarse al origen de datos Recursos humanos del servidor HRSRVR (un servidor Microsoft SQL) utilizando el identificador (Id) de inicio de sesión López y la contraseña Sésamo, se puede utilizar la siguiente cadena de conexión.

ODBC;DSN=Recursos humanos;SERVER=HRSRVR;UID=López;PWD=Sésamo

Para más información acerca de tener acceso a las bases de datos ODBC, vea el capítulo 18, "Acceso a datos externos," en Creación de aplicaciones con Microsoft Access 97.


Propiedad Intervalo ODBC (ODBCTimeout) (Microsoft Access)
Propiedad Intervalo ODBC (ODBCTimeout)

La propiedad Intervalo ODBC (ODBCTimeout) se puede utilizar para especificar el número de segundos que va a esperar Microsoft Access antes de que se produzca un error de tiempo de espera cuando se ejecuta una consulta en una base de datos ODBC (Conectividad de base de datos abierta).

Valores

La propiedad Intervalo ODBC (ODBCTimeout) es un valor de tipo Entero que representa el número de segundos que va a esperar Microsoft Access. El valor predeterminado es 60 segundos. Cuando esta propiedad está establecida a 0, no se produce ningún error de tiempo de espera.

Esta propiedad se puede establecer utilizando la hoja de propiedades de la consulta o Visual Basic.

Comentarios

Cuando se utiliza una base de datos ODBC, como Microsoft SQL Server, hay muchos retrasos debidos al tráfico de la red o a que se utiliza mucho el servidor de ODBC. La propiedad Intervalo ODBC (ODBCTimeout) permite especificar cuánto tiempo va a esperar Microsoft Access a que se establezca una conexión a la red antes de que se produzca un error de tiempo de espera.

Para más información acerca de la forma de tener acceso a las bases de datos ODBC, vea el capítulo 18, "Acceso a datos externos," en Creación de aplicaciones con Microsoft Access 97.


Propiedades Cadena de conexión del origen y Base de datos de origen

Estas propiedades se pueden utilizar para tener acceso a datos externos cuando no se pueden vincular tablas externas a la base de datos.

•	La propiedad Cadena de conexión del origen especifica el nombre de la aplicación utilizada para crear una base de datos externa.

•	La propiedad Base de datos de origen especifica la base de datos externa en la que residen las tablas o consultas de origen para una consulta.

Nota   Las propiedades Cadena de conexión del origen y Base de datos de origen se aplican a todas las consultas excepto a las de definición de datos, paso a través y unión.

Valores

Para establecer el valor de las propiedades Cadena de conexión del origen y Base de datos de origen se utiliza una expresión de cadena.

Estas propiedades se pueden establecer en la hoja de propiedades de la consulta o en la vista SQL de la ventana Consulta. En la instrucción SQL, las propiedades corresponden a la cláusula IN.

Nota   Si va a tener acceso a múltiples orígenes de bases de datos, utilice la propiedad Origen en lugar de las propiedades Cadena de conexión del origen y Base de datos de origen.

Comentarios

Hay que utilizar las propiedades Cadena de conexión del origen y Base de datos de origen para tener acceso a tablas desde bases de datos externas creadas en aplicaciones que no utilizan tablas vinculadas.

Estos son algunos ejemplos de valores de estas propiedades:

•	Para una base de datos de Microsoft Access, el valor de la propiedad y Base de datos de origen es la ruta de acceso y nombre de la base de datos (por ejemplo, C:\Cuentas\Clientes). Microsoft Access agrega la extensión de nombre de archivo automáticamente. La propiedad Cadena de conexión del origen no tiene un valor para una base de datos de Microsoft Access.

•	Para una base de datos creada por un producto como Paradox, el valor de la propiedad Base de datos de origen es la ruta de acceso (por ejemplo, C:\Pdoxdata). El valor de la propiedad Cadena de conexión del origen es el especificador del tipo de base de datos (por ejemplo, Paradox 3.x;). Si desea tener una lista de especificadores, vea la propiedad Connect de objetos de acceso a datos (DAO).

•	En el ejemplo siguiente se utilizan tablas de dBASE IV del directorio C:\Dbdata como origen de datos para la consulta.

SELECT Cliente.NOMCOMPAÑÍA, Pedidos.IDPEDIDO, Pedidos.FECHAPEDIDO

FROM Cliente INNER JOIN Pedidos

ON Cliente.IDCLIENTE = Pedidos.IDCLIENTE

IN 'C:\Dbdata'[dBASE IV;];

•	Para una base de datos ODBC (Conectividad de base de datos abierta), el valor de la propiedad Cadena de conexión del origen es el nombre de la base de datos de origen y cualquier información adicional requerida por el producto, como el identificador (Id) de inicio de sesión y la contraseña. Por ejemplo, para una base de datos de Microsoft SQL Server la configuración sería:

ODBC;DSN=salessrv;UID=jace;PWD=contraseña;DATABASE=ventas;

La propiedad Base de datos de origen no tiene un valor para las bases de datos ODBC.

Para más información acerca de la forma de tener acceso a las bases de datos ODBC, vea le capítulo 18, "Acceso a datos externos," en Creación de aplicaciones con Microsoft Access 97.


Propiedad Registros únicos

La propiedad Registros únicos se puede utilizar para especificar si se van a devolver sólo registros únicos basados en todos los campos del origen de datos base, y no simplemente los campos presentes en la consulta en sí.

Nota   La propiedad Registros únicos se aplica sólo a las consultas de acciones de datos anexados y creación de tabla y consultas de selección.

Valores

La propiedad Registros únicos puede tener los valores siguientes.

Valor	Descripción
Sí	No devuelve registros duplicados.
No	(Predeterminado) Devuelve registros duplicados.
La propiedad Registros únicos se puede establecer en la hoja de propiedades de la consulta o en la vista SQL de la ventana Consulta.

Nota   Esta propiedad se establece cuando se crea una nueva consulta utilizando una instrucción SQL. El predicado DISTINCTROW corresponde al valor de la propiedad Registros únicos. El predicado DISTINCT corresponde al valor de la propiedad Valores únicos.

Comentarios

Se puede utilizar la propiedad Registros únicos cuando se desea omitir datos basándose en registros duplicados completos, no sólo en campos duplicados. Microsoft Access considera que un registro es único si el valor de un campo del registro difiere del valor del mismo campo en otro registro.

La propiedad Registros únicos sólo surte efecto cuando se utiliza más de una tabla en la consulta y se seleccionan campos de las tablas que se utilizan en la consulta. La propiedad Registros únicos se ignora si la consulta incluye sólo una tabla.

Las propiedades Registros únicos y Valores únicos están relacionadas por el hecho de que sólo puede estar establecida a Sí una de ellas a la vez. Cuando se establece Registros únicos a Sí, por ejemplo, Microsoft Access establece automáticamente Valores únicos a No. Pero se pueden establecer ambas a No. Cuando las dos propiedades están establecidas a No, se devuelven todos los registros.


Ejemplo de la propiedad Registros únicos

La consulta de este ejemplo devuelve una lista de clientes de la tabla Clientes que tienen por lo menos un pedido en la tabla Pedidos.

Tabla Clientes

Nombre de la compañía	Id Cliente
Ernst Handel	ERNSH
Familia Arquibaldo	FAMIA
FISSA Fabrica Inter. Salchichas S.A.	FISSA
Folies gourmandes	FOLIG
Tabla Pedidos

Id Cliente	Id Pedido
ERNSH	10698
FAMIA	10512
FAMIA	10725
FOLIG	10763
FOLIG	10408
La siguiente instrucción SQL devuelve los nombres de clientes en la tabla siguiente:

SELECT DISTINCTROW Clientes.NombreCompañía, Clientes.IdCliente

FROM Clientes INNER JOIN Pedidos

ON Clientes.IdCliente = Pedidos.IdCliente;

Clientes devueltos	Id Cliente
Ernst Handel	ERNSH
Familia Arquibaldo	FAMIA
Folies gourmandes	FOLIG


Propiedad Valores únicos

La propiedad Valores únicos se puede utilizar cuando se desea omitir registros que contienen datos duplicados en los campos mostrados en la vista Hoja de datos. Por ejemplo, si el resultado de una consulta incluye mas de un campo, la combinación de valores de todos los campos tiene que ser única para un registro dado que se va a incluir en los resultados.

Nota   La propiedad Valores únicos se aplica sólo a las consultas de acciones de datos anexados y creación de tabla y consultas de selección.

Valores

La propiedad Valores únicos puede tener los valores siguientes.

Valor	Descripción
Sí	Muestra sólo los registros en los que son únicos los valores de todos los campos mostrados en la vista Hoja de datos.
No	(Predeterminado) Muestra todos los registros.
La propiedad Valores únicos se puede establecer en la hoja de propiedades de la consulta o en la vista SQL de la ventana Consulta.

Nota   Esta propiedad se puede establecer cuando se crea una nueva consulta utilizando una instrucción SQL. El predicado DISTINCT corresponde al valor de la propiedad Valores únicos. El predicado DISTINCTROW corresponde al valor de la propiedad Registros únicos.

Comentarios

Cuando se establece la propiedad Valores únicos a Sí, los resultados de la consulta no son actualizables y no reflejarán cambios subsiguientes efectuados por otros usuarios.

Las propiedades Valores únicos y Registros únicos están relacionadas por el hecho de que sólo puede estar establecida a Sí una de ellas al mismo tiempo. Cuando se establece Valores únicos a Sí, por ejemplo, Microsoft Access establece automáticamente Registros únicos a No. Pero se pueden establecer ambas a No. Cuando las dos propiedades están establecidas a No, se devuelven todos los registros.

Sugerencia   Si desea contar el número de instancias de un valor en un campo, cree una consulta de totales.


Ejemplo de la propiedad Valores únicos

La instrucción SELECT de este ejemplo devuelve una lista de los países en que hay clientes. Como puede haber muchos clientes en cada país, muchos registros pueden tener el mismo país en la tabla Clientes. Pero cada país está representado sólo una vez en los resultados de la consulta.

En este ejemplo se utiliza la tabla Clientes, que contiene los datos siguientes.

País	Nombre de la compañía
Brasil	Familia Arquibaldo
Brasil	Gourmet Lanchonetes
Brasil	Hanari Carnes
Francia	Du monde entier
Francia	Folies gourmandes
Alemania	Frankenversand
Irlanda	Hungry Owl All-Night Grocers
Esta instrucción SQL devuelve los países en la tabla siguiente:

SELECT DISTINCT Clientes.País

FROM Clientes;

Países devueltos

Brasil

Francia

Alemania

Irlanda


Propiedades Formulario (Form) e Informe (Report)

Use las propiedades Formulario (Form) e Informe (Report) para hacer referencia a un formulario o informe, o para referirse al formulario o informe asociado a un control de subformulario o un control de subinforme.

Valores

Estas propiedades hacen referencia a un objeto de formulario o informe. Son de sólo lectura en todas las vistas.

Puede usar estas propiedades usando una macro o Visual Basic.

Comentarios

Estas propiedades se usan normalmente para hacer referencia al formulario o informe contenido en un control de subformulario o subinforme. Por ejemplo, el código siguiente utiliza la propiedad Formulario (Form) para tener acceso al control IdDePedido de un subformulario contenido en el control de subformulario DetallesPedido.

Dim entIdDePedido As Integer

entIdDePedido = Forms!Pedidos![DetallesPedido].Form![IdDePedido]

El ejemplo siguiente llama a una función de una hoja de propiedades utilizando la propiedad Formulario (Form) para hacer referencia al formulario activo que contiene el control llamado IdDeCliente.

= MiFunción(Form![IdDeCliente])

Al usar la propiedad Formulario (Form) de esta manera, se está haciendo referencia al formulario activo y no es necesario su nombre.

El ejemplo siguiente es el equivalente en Visual Basic del ejemplo anterior.

X = MiFunción(Forms![Clientes]![IdDeCliente])

Nota   Al usar las colecciones Formularios (Forms) o Informes (Reports), se ha de especificar el nombre del formulario o informe.


Ejemplo de las propiedades Formulario (Form) e Informe (Report)

Este ejemplo usa las propiedades Formulario (Form) e Informe (Report) para hacer referencia a un control de un subformulario y un subinforme.

Dim curImporteTotal As Currency

Dim curTotalVentas As Currency

curImporteTotal = Forms!Pedidos!DetallesPedido.Form!ImporteTotal

curTotalVentas = Reports!Ventas!Empleados.Report!TotalVentas


Propiedades VincularCamposSecundarios (LinkChildFields) y VincularCamposPrincipales (LinkMasterFields)

Use conjuntamente las propiedades VincularCamposSecundarios (LinkChildFields) y VincularCamposPrincipales (LinkMasterFields) para especificar cómo Microsoft Access vincula los registros de un formulario o informe con los registros de un subformulario, subinforme u objeto incrustado, tales como un gráfico. Si se establecen estas propiedades, Microsoft Access actualiza automáticamente el registro vinculado del subformulario al cambiar a un nuevo registro del formulario principal.

Valores

Puede establecer la propiedades VincularCamposSecundarios (LinkChildFields) y VincularCamposPrincipales (LinkMasterFields) del subformulario, subinforme u objeto incrustado de la siguiente forma:

•	La propiedad VincularCamposSecundarios (LinkChildFields) Escriba el nombre de uno o más campos de vinculación en el subformulario, subinforme u objeto incrustado.

•	La propiedad VincularCamposPrincipales (LinkMasterFields): Escriba el nombre de uno o más campos o controles de vinculación en el formulario o informe principales.

Puede utilizar el Vinculador de campos de subformulario/subinforme para establecer estas propiedades eligiendo el botón Generar  [image] a la derecha del cuadro de la propiedad en la hoja de propiedades.

También puede establecer estas propiedades mediante una expresión de cadena en una macro o Visual Basic.

Sólo es posible establecer estas propiedades en la vista Diseño o durante el evento Open de un formulario o informe.

Comentarios

No es necesario que tengan el mismo nombres los campos o controles que use para establecer estas propiedades, pero han de contener la misma clase de datos y tener el mismo (o compatible) tipo de datos y tamaño de campo. Por ejemplo, un campo AutoNumérico es compatible con un campo Numérico si la propiedad Tamaño del campo del campo numérico es Entero largo.

Puede usar el nombre de un control (incluso el nombre de un control calculado) para establecer la propiedad VincularCamposPrincipales (LinkMasterFields), pero no puede usar el nombre de un control para la propiedad VincularCamposSecundarios (LinkChildFields). Si desea usar un valor calculado como el vínculo para un subformulario, subinforme u objeto incrustado, defina un campo calculado en la consulta base del objeto secundario y establezca la propiedad VincularCamposSecundarios (LinkChildFields) a ese campo.

Cuando especifique más de un nombre de campo o control para el valor de estas propiedades, ha de introducir el mismo número de campos o controles para ambas propiedades y separar los nombres con un punto y coma (;).

Al crear un subformulario o subinforme arrastrando un formulario o informe desde la ventana Base de datos a otro formulario o informe o usando el Asistente para formularios, Microsoft Access automáticamente establece las propiedades VincularCamposSecundarios (LinkChildFields) y VincularCamposPrincipales (LinkMasterFields) bajo las condiciones siguientes:

•	Tanto el formulario o informe principal como el objeto secundario se basan en tablas y se ha definido una relación entre estas tablas con el comando Relaciones. Microsoft Access utiliza los campos que relacionan las dos tablas como los campos de vinculación.

•	El formulario o informe principal se basa en una tabla con una clave principal y el subformulario o subinforme se basan en una tabla o consulta que contiene un campo con el mismo nombre y el mismo tipo de datos (o compatible) que la clave principal. Microsoft Access usa la clave principal de la tabla base del objeto principal y el campo con el mismo nombre de la tabla o consulta base del objeto secundario como campos de vinculación.

Nota   Los campos de vinculación no han de estar incluídos en el objeto principal o en el objeto secundario. Es suficiente con que estén en las tablas o consultas base de los objetos, para que se puedan usar para vincular los objetos. Si se usa un asistente, Microsoft Access incluye automáticamente los campos de vinculación.


Propiedad Nombre (Name) (Microsoft Access)
Propiedad Nombre (Name)

Use la propiedad Nombre (Name) para especificar o determinar la expresión de cadena que identifique el nombre de un formulario, informe, sección, control u objeto Reference.

Valores

Un nombre válido conforme a las reglas para nombrar objetos para Microsoft Access. Para los formularios e informes, el nombre puede ser de hasta 64 caracteres. Para los controles, el nombre puede tener una longitud de hasta 255 caracteres.

Para los formularios e informes, establezca la propiedad Nombre (Name) eligiendo Guardar en el menú Archivo en la vista Diseño y escribiendo un nombre válido. Para cambiar el nombre de un formulario o informe existente en la ventana de la base de datos, haga clic en el nombre y, a continuación, elija Cambiar nombre en el menú Edición o vuelva a hacer clic en el nombre. También puede cambiar el nombre haciendo clic con el botón secundario y eligiendo Cambiar nombre en el menú contextual. Para cambiar el nombre de un formulario o informe cuando el objeto esté abierto, elija Guardar como/Exportar en el menú Archivo.

Para una sección o control, puede establecer esta propiedad utilizando la hoja de propiedades, una macro o Visual Basic. Puede usar la propiedad Nombre (Name) en expresiones para formulario e informes.

Sólo puede establecer esta propiedad en la vista Diseño.

Nota   Para un objeto Reference, esta propiedad es de sólo lectura en todas las vistas.

Comentarios

El nombre predeterminado para los formularios e informes nuevos es el nombre del objeto más un entero único. Por ejemplo, el primer formulario nuevo es Formulario1, el segundo es Formulario2, etc. Un formulario no puede tener el mismo nombre que otro objeto del sistema, tal como el objeto Pantalla (Screen).

Para un control independiente, el nombre predeterminado es el tipo del control más un entero único. Por ejemplo, si el primer control que se agrega a un formulario es un cuadro de texto, su propiedad Nombre (Name) será Texto1.

Para un control dependiente, el nombre predeterminado es el nombre del campo del origen de datos base. Si crea un control arrastrando un campo de la lista de campos, el valor de la propiedad Nombre del campo del campo se copia en el cuadro de la propiedad Nombre (Name) del control.

No se pueden asignar a ningún control o sección los nombres "Form" o "Report".

Los controles del mismo formulario o informe no pueden tener nombres idénticos, pero sí pueden ser iguales si se trata de controles de formularios o informes distintos. Tampoco pueden tener el mismo nombre un control y una sección de un mismo formulario.


Propiedad Principal (Parent)

Use la propiedad Principal (Parent) para hacer referencia al padre (objeto principal) de un control, sección o a un control que contiene otros controles. La propiedad Principal (Parent) devuelve un objeto de control si se trata de un control; devuelve un objeto de formulario o informe si el objeto principal es un formulario o informe.

Valores

La propiedad Principal (Parent) hace referencia a un objeto de formulario, informe o control y es de sólo lectura en todas las vistas.

Comentarios

Puede usar la propiedad Principal (Parent) para determinar qué formulario o informe es el padre actual cuando tenga un subformulario o subinforme que se ha insertado en múltiples formularios o informes.

Por ejemplo, podría insertar un subformulario DetallePedidos en un formulario y en un informe. El ejemplo siguiente usa la propiedad Principal (Parent) para hacer referencia al campo IdDePedido, que está presente en el formulario principal y en el informe. Puede introducir esta expresión en un control dependiente del subformulario.

= Parent!IdDePedido

La propiedad Principal (Parent) de una etiqueta es el control al que está vinculada. La propiedad Principal (Parent) de una casilla de verificación, botón de opción o botón de alternar de un grupo de opciones es el nombre del control del grupo de opciones. La propiedad Principal (Parent) de éste es el nombre del formulario.


Ejemplo de la propiedad Principal (Parent)

Este ejemplo utiliza la propiedad Principal (Parent) para examinar el objeto principal del control de etiqueta Etiqueta Speedy, el control de la casilla de verificación Speedy y el control del grupo de opciones EnvíoPor.

Dim frm As Form

Dim ctl As Control

Set frm = Forms!Pedidos

Set ctl = frm.[Etiqueta Speedy]

' Devuelve el nombre del control vinculado a la etiqueta.

MsgBox "El control principal es " & ctl.Parent.Name

Set ctl = frm.Speedy

' Devuelve el nombre del control que contiene al control.

MsgBox "El control principal es " & ctl.Parent.Name

Set ctl = frm.EnvíoPor

' Devuelve el nombre del formulario que contiene al control del grupo de opciones

MsgBox "El control principal es " & ctl.Parent.Name

El ejemplo siguiente también devuelve el nombre del formulario que contiene el control del grupo de opciones.

MsgBox Forms!Pedidos! _

[Etiqueta Speedy].Parent.Parent.Parent.Name


Propiedad Sección (Section)

Use la propiedad Sección (Section) para identificar una sección de un formulario o informe y tener acceso a las propiedades de esa sección. También puede identificar los controles por la sección del formulario o informe donde aparece el control.

Valores

La propiedad Sección (Section) es un valor de tipo Integer correspondiente a una sección determinada. Puede utilizar valores Entero o las constantes listadas a continuación. Se recomienda utilizar las constantes para hacer que el código sea más legible.

Valor	Constante	Descripción
0	acDetail	Sección detalle de formulario o sección detalle de informe
1	acHeader	Sección de encabezado de formulario o sección de encabezado de informe
2	acFooter	Sección de pie de formulario o sección de pie de informes
3	acPageHeader	Sección de encabezado de página de formulario o sección de encabezado de página de informe
4	acPageFooter	Sección de pie de página de formulario o sección de pie de página de informe
5	acGroupLevel1Header	Sección de encabezado de nivel de grupo 1 (sólo informes)
6	acGroupLevel1Footer	Sección de pie de nivel de grupo 1 (sólo informes)
7	acGroupLevel2Header	Sección de encabezado de nivel de grupo 2 (sólo informes)
8	acGroupLevel2Footer	Sección de pie de nivel de grupo 2 (sólo informes)
Si un informe tiene secciones de nivel de grupo adicionales, los pares de encabezados y pies se numeran consecutivamente a partir del 9.

La propiedad Sección (Section) es de sólo lectura en todas las vistas.

Para los formularios y los informes, la propiedad Sección (Section) es una matriz con todas las secciones existentes del formulario o informe identificada por el número de sección. Por ejemplo, Section(0) hace referencia a la sección Detalle de un formulario y Section(3) se refiere a la sección de encabezado de página de un formulario.

También se puede hacer referencia a una sección por su nombre. Estas instrucciones hacen referencia a la sección Detalle0 del formulario Clientes y son equivalentes.

Forms!Clientes.Section(acDetail).Visible

Forms!Clientes.Section(0).Visible

Forms!Clientes.Detalle0.Visible

Comentarios

Para los formularios y los informes, se ha de combinar la propiedad Sección (Section) con otras propiedades que se aplican a las secciones de formularios o informes. Este ejemplo muestra cómo hacer referencia a la propiedad Visible de la sección de encabezado de página del formulario Clientes.

Forms!Clientes.Section(acPageHeader).Visible

Forms!Clientes.Section(3).Visible

Para los controles, puede usar la propiedad Sección (Section) para determinar en qué sección aparece un control de un formulario o informe. El ejemplo siguiente utiliza la propiedad Sección (Section) para determinar qué sección contiene el control IdDeCliente.

Dim entNúmeroSección As Integer

entNúmeroSección = Forms!Clientes!IdDeCliente.Section


Propiedad ObjetoOrigen (SourceObject)

Use la propiedad ObjetoOrigen (SourceObject) para identificar el formulario o informe origen del subformulario o subinforme de un formulario o informe. También puede usar esta propiedad con marcos de objeto independientes vinculados para determinar la ruta completa y el nombre del archivo que contiene los datos vinculados al marco de objeto.

Valores

Introduzca el nombre del formulario o informe origen del subformulario en la hoja de propiedades del control. Si agrega un subformulario o subinforme a un formulario o informe arrastrándolo desde la ventana Base de datos, la propiedad se establecerá automáticamente en la hoja de propiedades.

Para los marcos de objeto independientes, la propiedad ObjetoOrigen (SourceObject) se establece automáticamente al utilizar el comando Objeto del menú Insertar para insertar un objeto OLE.

Para un subformulario o subinforme, puede establecer esta propiedad utilizando la hoja de propiedades del control, una macro o Visual Basic.

En Visual Basic, esta propiedad se establece usando una expresión de cadena que contiene el nombre de un formulario o informe.

Para los marcos de objeto independientes vinculados, la propiedad ObjetoOrigen (SourceObject) no se puede establecer en ninguna vista.

Nota   No se puede establecer o modificar la propiedad ObjetoOrigen (SourceObject) en los eventos Open o Format de un informe.

Comentarios

Si elimina el valor de la propiedad ObjetoOrigen (SourceObject) en la hoja de propiedades de un subformulario o subinforme, el control permanecerá en el formulario pero ya no estará vinculado al formulario o informe origen.


Ejemplo de la propiedad ObjetoOrigen (SourceObject)

Este ejemplo muestra en la ventana Depuración el nombre del formulario origen del control del subformulario Lista de productos.

Debug.Print Forms!Categorías! _

[Lista de productos].SourceObject


Propiedad ActiveControl

La propiedad ActiveControl se puede utilizar junto con el objeto Pantalla (Screen) para identificar o hacer referencia al control que tiene el enfoque.

Valores

El valor de esta propiedad contiene una referencia al objeto Control que tiene el enfoque en tiempo de ejecución.

Esta propiedad está disponible utilizando una macro o Visual Basic y es de sólo lectura en todas las vistas.

Comentarios

La propiedad ActiveControl se puede utilizar para hacer referencia al control que tiene el enfoque en tiempo de ejecución junto con una de sus propiedades o métodos. En el ejemplo siguiente se asigna el nombre de un control con el enfoque a la variable cadNombreControl:

Dim ctlControlActual As Control

Dim cadNombreControl As String

Set ctlControlActual = Screen.ActiveControl

cadNombreControl = ctlControlActual.Nombre

Si no tiene el enfoque ningún control cuando se utiliza la propiedad ActiveControl o si todos los controles del formulario activo están ocultos o deshabilitados, se produce un error.


Ejemplo de la propiedad ActiveControl

En el ejemplo siguiente se asigna el control activo a la variable ctlControlActual y luego se efectúan diferentes acciones dependiendo del valor de la propiedad Nombre (Name) del control.

Dim ctlControlActual As Control

Set ctlControlActual = Screen.ActiveControl

If ctlControlActual.Nombre = "txtIdCliente" Then

.	' Hace esto.

.

.

ElseIf ctlControlActual.Nombre = "btnDetallesCliente" Then

.	' Hace esto.

.

.

End If


Propiedad ActiveForm

La propiedad ActiveForm se puede utilizar junto con el objeto Pantalla (Screen) para identificar o hacer referencia al formulario que tiene el enfoque.

Valores

El valor de esta propiedad contiene una referencia al objeto Formulario (Form) que tiene el enfoque en tiempo de ejecución.

Esta propiedad está disponible utilizando una macro o Visual Basic y es de sólo lectura en todas las vistas.

Comentarios

La propiedad ActiveForm se puede utilizar para hacer referencia a un formulario activo junto con una de sus propiedades o métodos. En el ejemplo siguiente se muestra el valor de la propiedad Nombre (Name) del formulario activo:

Dim frmFormActual As Form

Set frmFormActual = Screen.ActiveForm

MsgBox "El formulario actual es " & frmFormActual.Nombre

Si un subformulario tiene el enfoque, ActiveForm hace referencia al formulario principal. Si no tiene el enfoque ningún formulario ni subformulario cuando se utiliza la propiedad ActiveForm, se produce un error.


Propiedad ActiveReport

La propiedad ActiveReport se puede utilizar junto con el objeto Pantalla (Screen) para identificar o hacer referencia al informe que tiene el enfoque.

Valores

El valor de esta propiedad contiene una referencia al objeto Informe (Report) que tiene el enfoque en tiempo de ejecución.

Esta propiedad sólo está disponible utilizando una macro o Visual Basic y es de sólo lectura en todas las vistas.

Comentarios

La propiedad ActiveReport se puede utilizar para hacer referencia a un informe activo junto con una de sus propiedades o métodos. El ejemplo siguiente muestra el valor de la propiedad Nombre (Name) del informe activo:

Dim rptInformeActual As Report

Set rptInformeActual = Screen.ActiveReport

MsgBox "El informe actual es " & rptInformeActual.Nombre

Si no tiene el enfoque ningún informe cuando se utiliza la propiedad ActiveReport, se produce un error.


Propiedad Marcador (Bookmark) (Microsoft Access)
Propiedad Marcador (Bookmark)

La propiedad Marcador (Bookmark) se puede utilizar con formularios para establecer un marcador que identifica inequívocamente un registro determinado en la tabla, consulta o instrucción SQL base del formulario.

Valores

La propiedad Marcador (Bookmark) contiene una expresión de cadena creada por Microsoft Access.

Esta propiedad se puede establecer utilizando una macro o Visual Basic.

Nota   La propiedad Marcador (Bookmark) del formulario se obtiene o establece de forma independiente desde la propiedad Bookmark de objetos de acceso a datos (DAO) de la tabla o consulta base.

Comentarios

Cuando se abre un formulario dependiente en vista Formulario, se asigna a cada registro un marcador único. En Visual Basic, se puede guardar el marcador del registro actual asignando el valor de la propiedad Marcador (Bookmark) del formulario a una variable de cadena. Para volver a un registro guardado después de ir a un registro diferente, establezca la propiedad Marcador (Bookmark) del formulario al valor de la variable de cadena guardada. Puede usar la función CompCadena (StrComp) para compar un Variant o variable de cadena con un marcador, o cuando compare un marcador con otro. El tercer argumento de la función CompCadena (StrComp) debe establecerse al valor cero.

Nota   Los marcadores no se guardan con los registros que representan y sólo son válidos mientras está abierto el formulario. Microsoft Access los vuelve a crear cada vez que se abre un formulario dependiente.

No hay ningún límite para el número de marcadores que se pueden guardar, si cada uno se guarda con una variable de cadena única.

La propiedad Marcador (Bookmark) sólo está disponible para el registro actual del formulario. Para guardar un marcador para un registro diferente al registro actual, vaya al registro deseado y asigne el valor de la propiedad Marcador (Bookmark) a una variable de cadena que identifique este registro.

Se pueden utilizar marcadores en cualquier formulario que esté basado por completo en tablas de Microsoft Access. Pero otros productos de base de datos pueden no admitir los marcadores. Por ejemplo, no se pueden utilizar marcadores en un formulario basado en una tabla vinculada que no tenga un índice principal.

Volver a consultar un formulario invalida los marcadores que se hayan establecido en los registros del formulario. Pero hacer clic en Renovar del menú Registros no afecta a los marcadores.

Como Microsoft Access crea un marcador único para cada registro del conjunto de registros de un formulario al abrir el formulario, el marcador de un formulario no servirá para otro conjunto de registros, aún cuando los dos conjuntos de registros estén basados en la misma tabla, consulta o instrucción SQL. Por ejemplo, supongamos que abre un formulario dependiente de la tabla Clientes. Si a continuación abre la tabla Clientes con Visual Basic y utiliza el método Seek para ubicar un registro específico en la tabla, no puede establecer la propiedad Marcador (Bookmark) del formulario al registro de tabla actual. Para efectuar este tipo de operación puede utilizar el método FindFirst con la propiedad RecordsetClone del formulario.

Se produce un error si se establece la propiedad Marcador (Bookmark) a una variable de cadena y luego se intenta volver a ese registro después de que ha sido borrado.

El valor de la propiedad Marcador (Bookmark) no es lo mismo que el número de registro.


Ejemplo de la propiedad Marcador (Bookmark)

Para probar el ejemplo siguiente con la base de datos de ejemplo Neptuno, hay que agregar un botón de comando llamado cmdBuscarNombreContacto al formulario Proveedores y agregar luego el código siguiente al evento Click del botón. Cuando el usuario hace clic en el botón, se le pide que escriba una parte del nombre de contacto a buscar. Si se encuentra el nombre, la propiedad Marcador (Bookmark) del formulario se establece a la propiedad Bookmark de DAO del objeto Recordset, lo que mueve el registro actual del formulario al nombre encontrado.

Private Sub cmdBuscarNombreContacto_Click()

Dim rst As Recordset, cadCriterio As String

cadCriterio = "[NombreContacto] Like '*" & CuadroEnt("Escriba las " _

& "primeras letras del nombre a buscar") & "*'"

Set rst = Me.RecordsetClone

rst.FindFirst cadCriterio

If rst.NoMatch Then

CuadroMsj "No se ha encontrado ninguna entrada"

Else

Me.Bookmark = rst.Bookmark

End If

End Sub


Propiedades CurrentObjectType y CurrentObjectName

Las propiedades CurrentObjectType y CurrentObjectName se pueden utilizar junto con el objeto Application para determinar el tipo del objeto de base de datos activo (tabla, consulta, formulario, informe, macro o módulo) y el nombre del objeto de base de datos activo. El objeto de base de datos activo es el objeto que tiene el enfoque o en el que se está ejecutando código.

Valores

La propiedad CurrentObjectType es establecida por Microsoft Access a una de las siguientes constantes intrínsecas de Microsoft Access.

Valor	Descripción
acTable	El objeto activo es una tabla.
acQuery	El objeto activo es una consulta.
acForm	El objeto activo es un formulario.
acReport	El objeto activo es un informe.
acMacro	El objeto activo es una macro.
acModule	El objeto activo es un módulo.
La propiedad CurrentObjectName es establecida por Microsoft Access a una expresión de cadena que contiene el nombre del objeto activo.

Estas propiedades sólo están disponibles utilizando Visual Basic y son de sólo lectura en todas las vistas.

Comentarios

Las condiciones siguientes determinan qué objeto se considera objeto activo:

•	Si el objeto activo es una hoja de propiedades, barra de comando, menú, paleta o lista de campos de un objeto, las propiedades CurrentObjectType y CurrentObjectName devuelven el tipo y nombre del objeto base.

•	Si el objeto activo es un formulario emergente, las propiedades CurrentObjectType y CurrentObjectName hacen referencia al formulario emergente en sí, no al formulario desde el que se ha abierto.

•	Si el objeto activo es la ventana Base de datos, las propiedades CurrentObjectType y CurrentObjectName devuelven el elemento seleccionado en la ventana Base de datos.

•	Si no hay ningún objeto seleccionado, la propiedad CurrentObjectType devuelve Verdadero (–1) y la propiedad CurrentObjectName devuelve una cadena de longitud cero (" ").

•	Si el estado actual es ambiguo (el objeto activo no es una tabla, consulta, formulario, informe, macro o módulo), por ejemplo, si un cuadro de diálogo tiene el enfoque, la propiedad CurrentObjectType devuelve Verdadero y la propiedad CurrentObjectName devuelve el nombre del cuadro de diálogo.

Estas propiedades se pueden utilizar con la función SysCmd para determinar el objeto activo y su estado (por ejemplo, si el objeto está abierto, si es nuevo o si se ha modificado pero no se ha guardado).


Ejemplo de las propiedades CurrentObjectType y CurrentObjectName

En el ejemplo siguiente se utilizan las propiedades CurrentObjectType y CurrentObjectName con la función SysCmd para determinar si el objeto activo es el formulario Productos y si este formulario está abierto y se ha modificado pero no se ha guardado. Si se cumplen estas condiciones, se guarda el formulario y luego se cierra.

Sub ComprobarProductos()

Dim entEstado As Integer

Dim entTipoActual As Integer

Dim cadNombreActual As String

entTipoActual = Application.CurrentObjectType

cadNombreActual = Application.CurrentObjectName

If entTipoActual = acForm And cadNombreActual = "Productos" Then

entEstado = SysCmd(acSysCmdGetObjectState, entTipoActual, cadNombreActual)

' Formulario Productos cambiado pero no guardado.

If entEstado = acObjStateDirty + _

acObjStateOpen Then

' Cierra el formulario Productos y guarda los cambios.

DoCmd.Close entTipoActual, _

cadNombreActual, acSaveYes

End If

End If

End Sub


Propiedad Me

La propiedad Me se puede utilizar en Visual Basic para hacer referencia a un a formulario, informe, (o al formulario o informe asociados con un subformulario o subinforme) o al módulo de clase donde se está ejecutando en ese momento código de Visual Basic.

Valores

La propiedad Me sólo está disponible utilizando Visual Basic y es de sólo lectura en todas las vistas.

Comentarios

La propiedad Me contiene una referencia de objeto al formulario o informe actual y es más rápida que una referencia de objeto totalmente calificada. Por ejemplo, los dos fragmentos de código siguiente hacen referencia al valor del control Apellido del registro actual del formulario Empleados:

cadApellido = Forms!Empleados.Apellido

cadApellido = Me!Apellido

En la mayoría de los casos, el formulario o informe al que hace referencia la propiedad Me es el mismo formulario o informe al que hacen referencia las propiedades ActiveForm o ActiveReport del objeto Pantalla (Screen). Sin embargo, estas propiedades hacen referencia al formulario o informe que tiene el enfoque, mientras que la propiedad Me siempre hace referencia al formulario o informe en el que se está ejecutando código. Por ejemplo, se puede producir un evento Timer en un formulario que no tiene el enfoque. Cuando esto ocurre, el código Screen.ActiveForm hace referencia al formulario que tiene el enfoque y la propiedad Me hace referencia al formulario en que se ha producido el evento Timer. Por tanto, cuando se están creando procedimientos genéricos que operan en el formulario actual, el método preferible es pasar el formulario al procedimiento utilizando la propiedad Me en lugar de la propiedad ActiveForm.

Puede usar la palabra clave Me en módulos de clase para referirse a la instancia actual de esa clase. De la misma manera que usa Me en módulos de clase de formularios e informes para obtener una referencia al formulario o informe actual, puede usar Me en un módulo de clase para obtener una referencia al objeto de módulo de clase actual.


Ejemplo de la propiedad Me

El ejemplo siguiente muestra cómo cambiar el título de un formulario Clientes a un valor que proporcione el usuario. La subrutina CambiarTítulo pasa la propiedad Me (que representa al objeto Form) a especificar el formulario activo. Como el procedimiento CambiarTítulo cambia el título del formulario activo (no el de un formulario específico), se puede llamar desde otros procedimientos de una aplicación.

CambiarTítulo Me, CuadroEnt("Introduzca el nuevo título "

& "del formulario")

Sub CambiarTítulo(frmFormularioActual As _

Form, cadTítulo As String)

' Cambia el título.

If TypeName(frmFormularioActual.Caption) = "Nulo" Then

frmFormularioActual.Caption= cadTítulo

Exit Sub

End If

If UCase(cadTítulo) _

<> UCase(frmFormularioActual.Caption) Then

frmFormularioActual.Caption= cadTítulo

End If

End Sub


Propiedad Module

La propiedad Module se puede utilizar para especificar un módulo de formulario o un módulo de informe.

Valores

La propiedad Module sólo está disponible utilizando Visual Basic y es de sólo lectura en todas las vistas.

Nota   La propiedad Module devuelve también una referencia a un objeto Module especificado.

Comentarios

Utilice la propiedad Module para tener acceso a las propiedades y métodos de un objeto Module asociado a un objeto Form o Report.

El valor de la propiedad TieneUnMóduloAsociado (HasModule) de un formulario o informe determina si éste tiene un módulo asociado. Si la propiedad TieneUnMóduloAsociado (HasModule) tiene el valor Falso, el formulario o informe no tiene un módulo asociado. Cuando se hace referencia a la propiedad Module de ese formulario o informe en la vista Diseño, Microsoft Access crea el módulo asociado y establece la propiedad TieneUnMóduloAsociado (HasModule) a Verdadero. Si hace referencia a la propiedad Module de un formulario o informe en tiempo de ejecución y el objeto tiene su propiedad TieneUnMóduloAsociado (HasModule) establecida a Falso, se producirá un error.

Esta propiedad se puede utilizar con cualquiera de las propiedades y métodos del objeto del módulo.


Ejemplo de la propiedad Module

En el ejemplo siguiente se utiliza la propiedad Module para insertar el método Beep en el evento Open de un formulario.

Dim cadCódigoAbrirForm As String

Dim mdl As Module

Set mdl = Forms!MiForm.Module

cadCódigoAbrirForm = "Sub Form_Open(Cancel As Integer)" _

& vbCrLf & "Beep" & vbCrLf & "End Sub"

With mdl

.InsertText cadCódigoAbrirForm

End With


Propiedad RecordsetClone

La propiedad RecordsetClone se puede utilizar para hacer referencia a un objeto Recordset de un formulario, especificado por la propiedad OrigenDelRegistro (RecordSource) del formulario.

Valores

El valor de la propiedad RecordsetClone es una copia de la consulta o tabla base especificada por la propiedad OrigenDelRegistro (RecordSource) del formulario. Si un formulario está basado en una consulta, por ejemplo, hacer referencia a la propiedad RecordsetClone es equivalente a copiar un objeto Recordset utilizando la misma consulta. Si luego se aplica un filtro al formulario, el objeto Recordset refleja el filtrado.

Esta propiedad sólo está disponible utilizando Visual Basic y es de sólo lectura en todas las vistas.

Comentarios

La propiedad RecordsetClone se utiliza para explorar u operar en los registros de un formulario independientemente del formulario en sí. Por ejemplo, puede utilizar la propiedad RecordsetClone cuando desea utilizar un método, como el método FindFirst, que no se puede utilizar con formularios.

Cuando se abre un nuevo objeto Recordset, su primer registro es el registro actual. Si se utiliza uno de los métodos Find o Move para hacer cualquier otro registro en el objeto Recordset actual, hay que sincronizar el registro actual del objeto Recordset con el registro actual del formulario asignando el valor de la propiedad Bookmark de objetos de acceso a datos (DAO) a la propiedad Marcador (Bookmark) del formulario.

Se puede utilizar la propiedad RecordCount para contar el número de registros que hay en un objeto Recordset. El ejemplo siguiente muestra cómo se pueden combinar las propiedades RecordCount y RecordsetClone para contar los registros de un formulario:

Forms!Pedidos.RecordsetClone.MoveLast

MsgBox "Mi formulario contiene " _

& Forms!Pedidos.RecordsetClone.RecordCount _

& " registros.", vbInformation, "Contador de registros "

Nota   Si cierra el formulario o si modifica la propiedad OrigenDelRegistro (RecordSource) del formulario, el objeto Recordset deja de ser válido. Si subsiguientemente hace referencia al objeto Recordset o a los marcadores guardados antes en el formulario o en el objeto Recordset, se producirá un error.


Ejemplo de la propiedad RecordsetClone

En el ejemplo siguiente se utiliza la propiedad RecordsetClone para crear una nueva copia del objeto Recordset desde el formulario Pedidos y luego se imprimen los nombres de los campos en la ventana Depuración.

Sub Print_Campo_Nombres()

Dim rst As Recordset, entI As Integer

Dim fld As Field

Set rst = Me.RecordsetClone

For Each fld in rst.Fields

' Imprime los nombres de los campos.

Debug.Print fld.Nombre

Next

End Sub

En el ejemplo siguiente se utiliza la propiedad RecordsetClone y el objeto Recordset para sincronizar un registro del conjunto de datos con el registro actual del formulario. Cuando el usuario selecciona el nombre de una compañía en un cuadro combinado, se utiliza el método FindFirst para ubicar el registro de esa compañía y la propiedad Bookmark de DAO del objeto Recordset se asigna a la propiedad Bookmark del formulario, haciendo que el formulario muestre el registro encontrado.

Sub IDProveedor_AfterUpdate()

Dim rst As Recordset

Dim cadNombreBúsqueda As String

Set rst = Me.RecordsetClone

cadNombreBúsqueda = Str(Me!IdProveedor)

rst.FindFirst "IdProveedor = " & cadNombreBúsqueda

If rst.NoMatch Then

CuadroMsj "Registro no encontrado "

Else

Me.Bookmark = rst.Bookmark

End If

rst.Close

End Sub


Propiedad MantenerJuntoElGrupo (GrpKeepTogether)

La propiedad MantenerJuntoElGrupo (GrpKeepTogether) se puede utilizar para especificar si se mantendrán juntos por páginas o por columnas los grupos en un informe de múltiples columnas que tengan su propiedad MantenerJuntos (KeepTogether) para un grupo establecida a Todo el grupo o Con primer detalle.

Valores

La propiedad MantenerJuntoElGrupo (GrpKeepTogether) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Por página	Los grupos se mantienen juntos por páginas.	0
Por columna	(Predeterminado) Los grupos se mantienen juntos por columna.	1
La propiedad MantenerJuntoElGrupo (GrpKeepTogether) se establece usando la hoja de propiedades del informe, una macro o Visual Basic.

Esta propiedad sólo se puede establecer en la vista Diseño del informe.

Comentarios

Puede utilizar esta propiedad para especificar si todos los datos de un grupo deben aparecer en la misma columna. Por ejemplo, si tiene una relación de empleados por departamento en un formato multi-columna, se puede utilizar esta columna para mantener a todos los miembros del mismo departamento en la misma columna.

El valor de la propiedad MantenerJuntoElGrupo (GrpKeepTogether) no tiene efecto si la propiedad MantenerJuntos (KeepTogether) para un grupo está establecida a No.


Propiedad HaContinuado (HasContinued)

La propiedad HaContinuado (HasContinued) se puede utilizar para determinar si parte de la sección actual se ha impreso en la página anterior.

Valores

La propiedad HaContinuado (HasContinued) se establece en Microsoft Access y es de sólo lectura en todas las vistas.

Valor	Descripción
Verdadero (True) (-1)	Parte de la sección actual ha sido impresa en la página anterior.
Falso (False) (0)	Parte de la sección actual no ha sido impresa en la página anterior.
El valor de la propiedad HaContinuado (HasContinued) se puede obtener usando una macro o Visual Basic.

Comentarios

Puede utilizar esta propiedad para determinar si se muestran u ocultan ciertos controles dependiendo del valor de la propiedad. Por ejemplo, se puede tener una etiqueta oculta en un encabezado de página que contenga el texto "Continúa desde la página anterior ". Si el valor de la propiedad HaContinuado (HasContinued) es Verdadero (True), se puede hacer visible la etiqueta oculta.


Propiedad ContieneDatos (HasData)

La propiedad ContieneDatos (HasData) se puede utilizar para determinar si un formulario o informe es dependiente de un recordset en blanco.

Valores

La propiedad ContieneDatos (HasData)se establece en Microsoft Access. El valor de esta propiedad puede ser de sólo lectura mientras se imprime o mientras esté en Vista preliminar.

Valor	Descripción
-1	El objeto tiene datos.
0	El objeto no tiene datos.
1	El objeto es independiente.
El valor de la propiedad ContieneDatos (HasData)se puede obtener usando una macro o Visual Basic.

Comentarios

Puede utilizar esta propiedad para determinar si ocultar un subinforme que no tenga datos. Por ejemplo, la siguiente expresión oculta el control del subinforme cuando su informe no tiene datos.

Me![ControlSubInforme].Visible = Me![ControlSubInforme].Report.HasData


Propiedad RepetirSección (RepeatSection)

La propiedad RepetirSección (RepeatSection) se puede utilizar para especificar si un encabezado de grupo debe repetirse en la siguiente página o columna cuando un grupo ocupa más de una página o columna.

Nota	La propiedad RepetirSección (RepeatSection) sólo se aplica encabezados de grupo en un informe

Valores

La propiedad RepetirSección (RepeatSection) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	Se repite el encabezado del grupo.	Verdadero (True) (-1)
No	(Predeterminado) No se repite el encabezado del grupo.	Falso (False) (0)
La propiedad RepetirSección (RepeatSection) se puede establecer usando la hoja de propiedades de la sección del encabezado del grupo, una macro o Visual Basic.

Comentarios

Cuando se imprime un informe que contenga un subinforme, la propiedad RepetirSección (RepeatSection) del subinfome determina si los encabezados de grupo de los subinformes deben repetirse a lo largo de las páginas o las columnas.


Propiedad Continuará (WillContinue)

La propiedad Continuará (WillContinue) se puede utilizar para determinar si la sección actual continúa en la página siguiente.

Valores

La propiedad Continuará (WillContinue) se establece en Microsoft Access y es de sólo lectura en todas las vistas.

Valor	Descripción
Verdadero (True) (-1)	La sección actual continúa en la página siguiente.
Falso (False) (0)	La sección actual no continúa en la página siguiente.
El valor de la propiedad Continuará (WillContinue) se puede obtener usando una macro o Visual Basic.

Comentarios

Puede utilizar esta propiedad para determinar si se muestran u ocultan ciertos controles dependiendo del valor de la propiedad. Por ejemplo, se puede tener una etiqueta oculta en un encabezado de página que contenga el texto "Continúa en la página siguiente". Si el valor de la propiedad Continuará (WillContinue) es Verdadero (True), se puede hacer visible la etiqueta oculta.


Propiedad ColumnHidden

Puede usar la propiedad ColumnHidden para mostrar u ocultar una columna especificada en la vista Hoja de datos. Por ejemplo, puede desear ocultar un campo DirecciónDeCliente que es demasiado ancho de forma que pueda ver los campos NombreDeCliente y Teléfono.

Nota   La propiedad ColumnHidden se aplica a todos los campos en la vista Hoja de datos y a los controles de formularios cuando el formulario está en la vista Hoja de datos.

Valores

Para configurar la propiedad ColumnHidden, haga clic en Ocultar columnas o Mostrar columnas, en el menú Formato de la vista Hoja de datos.

También puede establecer esta propiedad en Visual Basic usando un valor de tipo Long Integer para especificar alguno de los valores siguientes:

Valor	Descripción
Verdadero (True) (–1)	La columna está oculta.
Falso (False) (0)	(Predeterminado) La columna es visible.
Para establecer o cambiar esta propiedad para una tabla o consulta usando Visual Basic, debe usar la colección Properties de un campo. Si desea más detalles sobre cómo usar la colección Properties, consulte Objeto Property, Resumen de la colección Properties.

Nota   La propiedad ColumnHidden no está disponible en la vista Diseño.

Comentarios

Al ocultar una columna en la vista Hoja de datos no se ocultan los campos de la misma columna en la vista Formulario. Del mismo modo, al establecer la propiedad Visible de un control como False en la vista Formulario no se oculta la columna correspondiente en la vista Hoja de datos.

Puede mostrar un campo en una consulta aunque la columna del campo esté oculta en la vista Hoja de datos de la tabla.

Puede usar valores de una columna oculta como criterios para un filtro aunque la columna del campo permanezca oculta después de que aplicar el filtro.

No es posible aplicar los comandos Copiar, Pegar, Buscar y Reemplazar del menú Edición a las columnas ocultas.

Al establecer "0" en la propiedad ColumnWidth de un campo, o al cambiar el tamaño de un campo a ancho cero en la vista Hoja de datos, Microsoft Access establece automáticamente True en la correspondiente propiedad ColumnHidden. Al mostrar una columna se restablece en la propiedad ColumnWidth el valor que tenía antes de que se ocultase el campo.


Ejemplo de la propiedad ColumnHidden

Este ejemplo oculta el campo IdProducto en la vista Hoja de datos del formulario Productos.

Forms!Productos!IdProducto.ColumnHidden = -1

El siguiente ejemplo también oculta el campo IdProducto en la vista Hoja de datos de la tabla Productos. Para establecer la propiedad ColumnHidden, el ejemplo usa los procedimientos DisplayColumn y SetFieldProperty, que están en el módulo estándar de base de datos.

Dim dbs As Database

Set dbs = CurrentDb

ShowColumn dbs.TableDefs!Productos.Fields!IdProducto, False

Sub ShowColumn(fldObject As Field, entShow As Integer)

' Establecer la propiedad ColumnHidden.

SetFieldProperty fldObject, "ColumnHidden", dbLong, Not entShow

End Sub

Sub SetFieldProperty(fldField As Field, cadPropertyName As String, _

entPropertyType As Integer, varPropertyValue As Variant)

' Establecer la propiedad del campo sin producir un error irrecuperable en tiempo de ejecución.

Const conErrPropertyNotFound = 3270

Dim prpProperty As Property

On Error Resume Next	' No capturar errores.

fldField.Properties(cadPropertyName) = varPropertyValue

If Err <> 0 Then	' Error al establecer el valor.

If Err <> conErrPropertyNotFound Then

On Error GoTo 0

MsgBox " No se puede establecer la propiedad '" & cadPropertyName _

& "' en el campo '" & fldField.name & "'", 48, "SetFieldProperty"

Else

On Error GoTo 0

Set prpProperty = fldField.CreateProperty(cadPropertyName, _

entPropertyType, varPropertyValue)

fldField.Properties.Append prpProperty

End If

End If

End Sub


Propiedad ColumnOrder

Puede usar la propiedad ColumnOrder para especificar el orden de las columnas en la vista Hoja de datos.

Nota   La propiedad ColumnOrder se aplica a todos los campos en la vista Hoja de datos y a los controles de los formularios cuando éstos están en la vista Hoja de datos.

Valores

Puede establecer esta propiedad seleccionando una columna en la vista Hoja de datos y arrastrándola a su nueva posición.

También puede establecer esta propiedad en Visual Basic utilizando un valor de tipo Long Integer.

Para establecer o cambiar esta propiedad para una tabla o consulta usando Visual Basic, debe utilizar la colección Properties de un campo. Para más detalles, consulte Objeto Property, Resumen de la colección Properties.

Nota   La propiedad ColumnOrder no está disponible en la vista Diseño.

Comentarios

En la vista Hoja de datos, el valor de la propiedad ColumnOrder de un campo se determina por la posición del campo. Por ejemplo, el campo de la columna del extremo izquierdo en la vista Hoja de datos tiene un valor "1" en la propiedad ColumnOrder, el siguiente campo tiene un valor "2", y así sucesivamente. Al cambiar la propiedad ColumnOrder de un campo se restablece la propiedad ColumnOrder para ese campo y todos los situados a la izquierda de su posición original en la vista Hoja de datos.

En otras vistas, el valor en la propiedad ColumnOrder es "0" a menos que cambie explícitamente el orden de uno o más campos en la vista Hoja de datos (bien arrastrando los campos a nuevas posiciones o bien cambiando los valores en sus propiedades ColumnOrder). Los campos a la derecha de la nueva posición del campo movido tendrán un valor "0" en la propiedad ColumnOrder en vistas distintas de la vista Hoja de datos.

El orden de los campos en la vista Hoja de datos no afecta al orden de los campos en la vista Diseño de la tabla o en la vista Formulario.


Ejemplo de la propiedad ColumnOrder

El siguiente ejemplo muestra los campos NombreDeProducto y CantidadPorUnidad en las dos primeras columnas del formulario Productos en la vista Hoja de datos.

Forms!Productos! NombreDeProducto.ColumnOrder = 1

Forms!Productos! CantidadPorUnidad.ColumnOrder = 2

El siguiente ejemplo muestra los campos NombreDeProducto y CantidadPorUnidad en las dos primeras columnas de la tabla Productos en la vista Hoja de datos. Para establecer la propiedad ColumnOrder, el ejemplo usa el procedimiento SetFieldProperty. Si el procedimiento se ejecuta con la tabla abierta, los cambios no se mostrarán hasta que se cierre y se vuelva a abrir.

Dim dbs As Database, tdfProductos As TableDef

Set dbs = CurrentDb

Set tdfProducts = dbs!Productos

SetFieldProperty tdfProducts! NombreDeProducto, "ColumnOrder", dbLong, 2

SetFieldProperty tdfProducts! CantidadPorUnidad, "ColumnOrder", dbLong, 3

Sub SetFieldProperty(fldField As Field, cadPropertyName As String, _

entPropertyType As Integer, varPropertyValue As Variant)

' Establecer propiedad del campo sin producir un error irrecuperable en tiempo de ejecución.

Const conErrPropertyNotFound = 3270

Dim prpProperty As Property

On Error Resume Next	' No capturar errores.

fldField.Properties(cadPropertyName) = varPropertyValue

If Err <> 0 Then	' Error al establecer valor.

If Err <> conErrPropertyNotFound Then

On Error GoTo 0

MsgBox "No se pudo establecer la propiedad '" & cadPropertyName _

& "' en el campo '" & fldField.name & "'", 48, "SetFieldProperty"

Else

On Error GoTo 0

Set prpProperty = fldField.CreateProperty(cadPropertyName, _

entPropertyType, varPropertyValue)

fldField.Properties.Append prpProperty

End If

End If

End Sub


Propiedad ColumnWidth

Puede usar la propiedad ColumnWidth para especificar el ancho de una columna en la vista Hoja de datos.

Nota   La propiedad ColumnWidth se aplica a todos los campos en la vista Hoja de datos y a los controles de los formularios cuando éstos están en la vista Hoja de datos.

Valores

Puede establecer esta propiedad arrastrando el borde derecho del selector de columna, o haciendo clic en el comando Ancho de la columna del menú Formato en la vista Hoja de datos y escribiendo el valor deseado. Al establecer la propiedad ColumnWidth con el comando Ancho de la columna, su valor se expresa en puntos.

En Visual Basic, el valor de la propiedad ColumnWidth es de tipo Integer, y representa el ancho de la columna en twips. Puede especificar el ancho o usar uno de los siguientes valores predefinidos.

Valor	Descripción
0	Oculta la columna.
–1	(Predeterminada) Ajusta el tamaño de la columna al ancho predeterminado.
Comentarios

Al establecer 0 en la propiedad ColumnWidth, o cambiar el tamaño de un campo a ancho cero en la vista Hoja de datos, se establece Verdadero (True) (–1) en la propiedad ColumnHidden del campo y se oculta el campo en la vista Hoja de datos.

Al establecer Falso (False) (0) en la propiedad ColumnHidden de un campo se restaura el valor que tenía en la propiedad ColumnWidth antes de que se ocultase el campo. Por ejemplo, si la propiedad ColumnWidth era –1 antes de que se ocultase el campo estableciendo 0 en su propiedad ColumnWidth, al cambiar la propiedad ColumnHidden del campo a Falso (False) se restablece –1 en ColumnWidth.

La propiedad ColumnWidth de un campo no está disponible cuando la propiedad ColumnHidden del campo tiene establecido Verdadero (True).


Propiedades FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic) y FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)

Puede usar las propiedades FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic) y FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline) para especificar la apariencia cursiva y subrayada de nombres de campos y datos en la vista Hoja de datos.

Nota   Las propiedades FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic) y FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline) se aplican a todos los campos en la vista Hoja de datos y a los controles de los formularios cuando el formulario está en la vista Hoja de datos.

Valores

Puede establecer estas propiedades haciendo clic en el botón Cursiva  [image] o Subrayar  [image] de la barra de herramientas barra de herramientas Formato (Hoja de datos).

También puede establecer estas propiedades en el cuadro de diálogo Fuente, que aparece al hacer clic en el comando Fuente del menú Formato en la vista Hoja de datos.

En Visual Basic, los valores de la propiedad FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic) son los siguientes:

Valor	Descripción
Verdadero (True) (–1)	El texto está en cursiva.
Falso (False) (0)	(Predeterminada) El texto no está en cursiva.
En Visual Basic, los valores de la propiedad FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline) son los siguientes:

Valor	Descripción
Verdadero (True)	El texto está subrayado.
Falso (False)	(Predeterminada) El texto no está subrayado.
En Visual Basic, los valores de estas propiedades son de tipo Boolean.

Comentarios

La tabla siguiente contiene las propiedades que no se encuentran en la colección Properties de los objetos TableDef ni QueryDef hasta que las agregue con el método CreateProperty o las establezca con la barra de herramientas Formato (Hoja de datos).

FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic)*	DatasheetForeColor*
AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)*	DatasheetBackColor
DatasheetFontName*	ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor)
FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)*	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)
EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)*	EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)
Nota   Al agregar o establecer alguna de las propiedades marcadas con un asterisco, Microsoft Access agregará automáticamente a la colección Properties todas las propiedades marcadas con asterisco.


Ejemplo de las propiedades FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic) y FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)

El siguiente ejemplo muestra los datos y los nombres de los campos en la vista Hoja de datos de la tabla Productos en cursiva y subrayados.

Forms![Productos].DatasheetFontItalic = True

Forms![Productos].DatasheetFontUnderline = True

El siguiente ejemplo muestra los datos y los nombres de los campos en la vista Hoja de datos de la tabla Productos en cursiva y subrayados.

Para establecer las propiedades FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic) y FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline) el ejemplo usa el procedimiento SetTableProperty, que está en el módulo estándar de base de datos.

Dim dbs As Database, tdfProductos As TableDef

Set dbs = CurrentDb

Set tdfProductos = dbs![Productos]

SetTableProperty tdfProductos, "DatasheetFontItalic", dbBoolean, True

SetTableProperty tdfProductos, "DatasheetFontUnderline", dbBoolean, True

Sub SetTableProperty(tdfTableObj As TableDef, strPropertyName As String, _

intPropertyType As Integer, varPropertyValue As Variant)

' Establece una propiedad de una tabla definida en Microsoft Access

' sin causar un error irrecuperable en tiempo de ejecución.

Const conErrPropertyNotFound = 3270

Dim prpProperty As Property

On Error Resume Next	' No capturar errores.

tdfTableObj.Properties(strPropertyName) = varPropertyValue

If Err <> 0 Then	' Error al establecer el valor.

If Err <> conErrPropertyNotFound Then

On Error GoTo 0

MsgBox " No se pudo establecer la propiedad '" & strPropertyName _

& "' en la tabla '" & tdfTableObj.Name & "'", 48, "SetTableProperty"

Else

On Error GoTo 0

Set prpProperty = tdfTableObj.CreateProperty(strPropertyName, _

intPropertyType, varPropertyValue)

tdfTableObj.Properties.Append prpProperty

End If

End If

tdfTableObj.Properties.Refresh

End Sub


Propiedades DatasheetFontName y AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)

Puede usar las propiedades DatasheetFontName y AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight) para especificar la fuente y el tamaño en puntos empleados para mostrar e imprimir los nombres de los campos y los datos en la vista Hoja de datos.

Nota   Las propiedades DatasheetFontName y AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight) se aplican a todos los campos en la vista Hoja de datos y a los controles de los formularios cuando éstos están en la vista Hoja de datos.

Valores

•	Propiedad DatasheetFontName. En Visual Basic, expresión de cadena igual al nombre de la fuente.

•	Propiedad AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight). En Visual Basic, valor de tipo Integer entre 1 y 127, que representa el tamaño de la fuente en puntos.

Puede establecer estas propiedades seleccionando el nombre de la fuente en el cuadro Fuente  [image]  o su tamaño en el cuadro Tamaño de fuente  [image]  de la barra de herramientas Formato (Hoja de datos).

También puede establecer estas propiedades con los cuadros Fuente y Tamaño, que aparecen al hacer clic en el comando Fuente del menú Formato en la vista Hoja de datos.

Comentarios

Los nombres de fuente que puede especificar para la propiedad DatasheetFontName dependen de las fuentes instaladas en su sistema y para su impresora. Si especifica una fuente que su sistema no puede mostrar o que no está instalada, Microsoft Windows la sustituirá por una similar.

El tamaño en puntos que especifique para la propiedad AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight) debe ser válido para la fuente especificada por la propiedad DatasheetFontName. Por ejemplo, MS Sans Serif está disponible en los tamaños en puntos 8, 10, 12, 14, 18, y 24.

Puede establecer los valores predeterminados para las propiedades DatasheetFontName y AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight) mediante las opciones en Fuente predeterminada de la ficha Hoja de datos del cuadro de diálogo Opciones, que aparece al hacer clic en el comando Opciones del menú Herramientas.

La tabla siguiente contiene propiedades que no se encuentran en la colección Properties de los objetos TableDef ni QueryDef hasta que las agregue con el método CreateProperty o las establezca con la barra de herramientas Formato (Hoja de datos).

FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic)*	DatasheetForeColor*
AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)*	DatasheetBackColor
DatasheetFontName*	ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor)
FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)*	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)
EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)*	EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)
Nota   Al agregar o establecer alguna de las propiedades marcadas con un asterisco, Microsoft Access agregará automáticamente a la colección Properties todas las propiedades marcadas con asterisco.


Ejemplo de las propiedades DatasheetFontName, AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight) y EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)

El ejemplo siguiente establece como fuente MS Serif, como tamaño 10 puntos y espesor de fuente medio (500) en la vista Hoja de datos de la tabla Productos.

Para establecer estas propiedades, el ejemplo usa el procedimiento SetTableProperty, que aparece en el ejemplo de las propiedades FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic) y FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline).

Dim dbs As Database, tdfProductos As TableDef

Set dbs = CurrentDb

Set tdfProductos = dbs!Productos

SetTableProperty tdfProductos, "DatasheetFontName", dbText, "MS Serif"

SetTableProperty tdfProductos, "DatasheetFontHeight", dbInteger, 10

SetTableProperty tdfProductos, "DatasheetFontWeight", dbInteger, 500

El siguiente ejemplo hace los mismos cambios que el ejemplo anterior en la vista Hoja de datos del formulario Productos que está abierto.

Forms!Productos.DatasheetFontName = "MS Serif"

Forms!Productos.DatasheetFontHeight = 10

Forms!Productos.DatasheetFontWeight = 500


Propiedad EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)

Puede usar la propiedad EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight) para especificar el ancho de línea de la fuente usada al mostrar e imprimir los caracteres de los nombres de los campos y datos en la vista Hoja de datos.

Nota   La propiedad EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight) se aplica a todos los campos en la vista Hoja de datos y a los controles de los formularios cuando éstos están en la vista Hoja de datos.

Valores

En Visual Basic, la propiedad EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight) puede tomar los siguientes valores de tipo Integer.

Valor	Descripción
100	Delgado
200	Extra fino
300	Fino
400	(Predeterminado) Normal
500	Medio
600	Semi-negrita
700	Negrita
800	Extra negrita
900	Grueso
También puede establecer Normal y Negrita en esta propiedad usando el cuadro de diálogo Fuente, que aparece al hacer clic en el comando Fuente del menú Formato en la vista Hoja de datos. En el cuadro Estilo de fuente, las únicas opciones para el espesor de la fuente son (idéntica a Normal) y Negrita.

Otra forma de establecer solamente las opciones Regular y Negrita es hacer clic en Negrita  [image]  en la barra de herramientas Formato (Hoja de datos).

Puede establecer el valor predeterminado de la propiedad EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)mediante las opciones de Fuente predeterminada en la ficha Hoja de datos del cuadro de diálogo Opciones, que aparece al hacer clic en el comando Opciones del menú Herramientas.

La tabla siguiente contiene propiedades que no se encuentran en la colección Properties de los objetos TableDef ni QueryDef hasta que las agregue con el método CreateProperty o las establezca con la barra de herramientas Formato (Hoja de datos).

FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic)*	DatasheetForeColor*
AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)*	DatasheetBackColor
DatasheetFontName*	ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor)
FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)*	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)
EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)*	EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)
Nota   Al agregar o establecer alguna de las propiedades marcadas con un asterisco, Microsoft Access agregará automáticamente a la colección Properties todas las propiedades marcadas con asterisco.


Propiedad FrozenColumns

Puede usar la propiedad FrozenColumns para determinar cuántas columnas de una hoja de datos están inmóviles. Las columnas inmóviles se muestran al lado izquierdo de la hoja de datos y no se mueven cuando se desplaza horizontalmente por la hoja de datos.

Nota La propiedad FrozenColumns se aplica sólo a tablas, formularios y consultas en la vista Hoja de datos.

Valores

La propiedad FrozenColumns la establece Microsoft Access cuando se hace clic en Inmovilizar columnas en el menú Formato.

En Visual Basic, el valor de esta propiedad es de tipo Integer, e indica el número de columnas de la hoja de datos que se han inmovilizado con el comando Inmovilizar columnas. La columna del selector de registro está siempre inmóvil, por lo que el valor predeterminado es 1. En consecuencia, al inmovilizar una columna se establece el valor 2 en la propiedad FrozenColumns, al inmovilizar dos se establece 3, y así sucesivamente.

El valor de esta propiedad es de sólo lectura en todas las vistas.

Comentarios

Cuando inmoviliza columnas con el comando Inmovilizar columnas, Microsoft Access las mueve automáticamente al extremo más a la izquierda de la hoja de datos, en el orden en el que las inmovilizó. Por ejemplo, si inmoviliza tres columnas, se convierten en la primera, la segunda y la tercera columnas de la hoja de datos. Como la columna del selector de registros está siempre inmovilizada, en este caso en la propiedad FrozenColumns estará establecido el valor 4. Las tres columnas inmovilizadas tendrán en sus propiedades ColumnOrder los valores 1, 2 y 3 (en el orden en que se hayan inmovilizado).

Al hacer clic en el comando Liberar todas las columnas del menú  Formato, todas las columnas inmovilizadas se liberan, y el valor de la propiedad FrozenColumns será 1.

Nota   El comando Liberar todas las columnas no restablece el orden original de las columnas cuando Inmovilizar columnas haya provocado un cambio en el orden.


Ejemplo de la propiedad FrozenColumns

El ejemplo siguiente usa la propiedad FrozenColumns para determinar cuántas columnas de una tabla están inmovilizadas en la vista Hoja de datos. Si están inmovilizadas más de tres columnas, se maximiza el tamaño de la tabla para que pueda verse el máximo número posible de columnas no inmovilizadas.

Sub CheckFrozen(strTableName As String)

Dim dbs As Database

Dim tdf As TableDef

Dim prp As Property

Const conPropertyNotFound = 3270  ' Error de propiedad inexistente.

Set dbs = CurrentDb	  ' Obtener base de datos actual.

Set tdf = dbs.TableDefs(strTableName)	  ' Obtener objeto para la tabla.

DoCmd.OpenTable strTableName, acNormal  ' Abrir tabla.

tdf.Properties.Refresh

On Error GoTo Frozen_Err

If tdf.Properties("FrozenColumns") > 3 Then   ' 'Comprobar propiedad.

DoCmd.Maximize

End If

Frozen_Bye:

Exit Sub

Frozen_Err:

If Err = conPropertyNotFound Then	  ' Propiedad no en colección.

Set prp = tdf.CreateProperty("FrozenColumns", dbInteger, 1)

tdf.Properties.Append prp

Resume Frozen_Bye

End If

End Sub


Propiedad AltoDeLaFila (RowHeight)

Puede usar la propiedad AltoDeLaFila (RowHeight) para especificar el alto de todas las filas en la vista Hoja de datos.

Nota   La propiedad AltoDeLaFila (RowHeight) se aplica a todos los campos en la vista Hoja de datos y a los controles de los formularios cuando éstos están en la vista Hoja de datos.

Valores

Puede establecer la propiedad AltoDeLaFila (RowHeight) en la vista Hoja de datos arrastrando el borde inferior del selector de registros o haciendo clic en el comando Alto de las filas del menú Formato. Al establecer la propiedad AltoDeLaFila (RowHeight) con el comando Alto de las filas, su valor se expresa en puntos.

En Visual Basic, el valor de la propiedad AltoDeLaFila (RowHeight) es de tipo Long Integer, y representa el alto de las filas de la hoja de datos en twips. Para especificar el alto predeterminada para la fuente actual, establezca Verdadero (True) (–1) en AltoDeLaFila (RowHeight).


Ejemplo de las propiedades AltoDeLaFila (RowHeight) y ColumnWidth

El ejemplo siguiente modifica el alto de las filas en la vista Hoja de datos de la tabla Clientes para mostrar dos líneas de datos (450 twips), y establece como ancho de la columna Dirección 3,8 cm (2160 twips). Esta configuración surtirá efecto la siguiente vez que se abra la tabla Clientes en la vista Hoja de datos.

Para establecer las propiedades AltoDeLaFila (RowHeight) y ColumnWidth se emplea el procedimiento SetTableProperty, que aparece en el ejemplo de las propiedades FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic) y FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline), y también el procedimiento SetFieldProperty, que aparece en el ejemplo de la propiedad ColumnHidden.

Dim dbs As Database, tdfClientes As TableDef

Set dbs = CurrentDb

Set tdfClientes = dbs![Clientes]

SetTableProperty tdfClientes, "RowHeight", dbLong, 450

SetFieldProperty tdfClientes![Dirección], "ColumnWidth", dbInteger, 2160

El ejemplo siguiente tiene efecto en la vista Hoja de datos del formulario Clientes abierto. En él se establece como alto de fila 450 twips, y se ajusta la columna al tamaño del texto visible.

Forms![Clientes].RowHeight = 450

Forms![Clientes]![Dirección].ColumnWidth = -2


Propiedades Autoextensible (CanGrow) y Autocomprimible (CanShrink)

Puede utilizar las propiedades Autoextensible (CanGrow) y Autocomprimible (CanShrink) para controlar la apariencia de las secciones o los controles de los formularios e informes que se imprimen o se ven en la vista previa. Por ejemplo, si establece ambas propiedades a Sí, una sección o un control se ajusta automáticamente para imprimir o ver una vista previa de todos los datos que contiene la sección o el control.

Notas

•	Las propiedades Autoextensible (CanGrow) y Autocomprimible (CanShrink) no se aplican a las secciones de encabezado de página y pie de página de un formulario o un informe, aunque se aplican a los controles de esas secciones.

•	Estas propiedades afectan a la visualización de secciones y controles de formularios sólo cuando el formulario se imprime y se ve en una vista previa, no cuando el formulario se muestra en la vista Formulario, la vista Hoja de datos o la vista Diseño.

Valores

La propiedad Autoextensible (CanGrow) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	La sección o el control se extiende verticalmente de modo que todos los datos que contiene puedan imprimirse o verse en una vista previa.	True (–1)
No	(Predeterminado) La sección o el control no se extienden. Los datos que no caben dentro del tamaño fijo de la sección o el control no se imprimirán ni se verán en la vista previa.	False (0)
La propiedad Autocomprimible (CanShrink) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	La sección o el control se comprime verticalmente de modo que los datos que contiene puedan imprimirse o verse en una vista previa sin dejar líneas en blanco.	True
No	(Predeterminado) La sección o el control no se comprime.	False
Puede establecer estas propiedades solamente mediante la hoja de propiedades de la sección o el control.

Para los controles, puede establecer el valor predeterminado de estas propiedades mediante el estilo de control predeterminado o el método DefaultControl de Visual Basic.

Los valores de estas propiedades son de sólo lectura en una macro o Visual Basic en cualquier vista excepto en la vista Diseño.

Comentarios

Puede utilizar estas propiedades para controlar la apariencia de los formularios y los informes impresos. Al establecer ambas propiedades a Sí, el objeto se ajusta automáticamente de modo que pueda imprimirse cualquier cantidad de datos. Cuando un control se extiende o se comprime, los controles situados bajo él se mueven hacia arriba o hacia abajo de la página.

Si establece la propiedad Autoextensible (CanGrow) de un control a Sí, Microsoft Access establece automáticamente la propiedad Autoextensible (CanGrow) de la sección que contiene el control a Sí (no obstante, si establece la propiedad Autocomprimible (CanShrink) de un control a Sí, Microsoft Access no establece la propiedad Autocomprimible (CanShrink) de la sección a Sí).

Las secciones se extienden y comprimen verticalmente en todo su ancho. Por ejemplo, supongamos que un formulario tiene dos cuadros de texto uno al lado del otro en una sección, y cada control tiene su propiedad Autocomprimible (CanShrink) establecida a Sí. Si un cuadro de texto contiene una línea de datos y el otro cuadro de texto contiene dos líneas de datos, ambos cuadros de texto tendrán una longitud de dos líneas, porque el tamaño de la sección se ajusta en todo su ancho. Para extender o comprimir los datos de forma independiente, puede situar dos controles de subformulario o subinforme uno al lado del otro, y establecer sus propiedades Autoextensible (CanGrow) y Autocomprimible (CanShrink) a Sí.

Al utilizar las propiedades Autoextensible (CanGrow) y Autocomprimible (CanShrink), recuerde que:

•	El valor de la propiedad no afecta al espacio horizontal entre los controles; sólo afecta a cómo ocupan los controles el espacio vertical.

•	Los controles superpuestos no pueden extenderse ni comprimirse.

•	El alto de un control grande puede impedir que los controles situados al lado de él se compriman. Por ejemplo, si varios controles pequeños están en el lado izquierdo de la sección de detalle de un informe y un control grande, como un marco de objeto independiente, se encuentra en el lado derecho, los controles del lado izquierdo no se comprimen, incluso aunque no contengan datos.


Propiedades Altura (Height) y Anchura (Width)

Puede utilizar las propiedades Altura (Height) y Anchura (Width) para cambiar el tamaño de un objeto a unas dimensiones específicas. Esto puede resultar útil, por ejemplo, si desea crear objetos que tengan exactamente el mismo tamaño o que tengan el mismo ancho o alto.

Notas

•	La propiedad Altura (Height) se aplica sólo a las secciones de formulario y las secciones de informe, no a los formularios y los informes.

•	La propiedad Anchura (Width) se aplica sólo a los formularios y los informes, no a las secciones de formularios e informes.

•	Ambas propiedades se aplican a los controles de formularios e informes.

Valores

Escriba un número para el alto o el ancho deseado en la unidad de medida actual. Para utilizar una unidad de medida diferente del valor del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows, especifique la unidad, como cm o pda (por ejemplo, cm o 3 pda). La propiedad Anchura (Width) debe tener un valor entre 0 y 22 pdas (55,87 cm).

Puede establecer estas propiedades mediante la hoja de propiedades del objeto, una macro o Visual Basic.

Para los controles, puede establecer el valor predeterminado de estas propiedades mediante el estilo de control predeterminado o el método DefaultControl de Visual Basic.

En Visual Basic, utilice una expresión numérica para establecer el valor de cada propiedad. Los valores se expresan en twips.

Para las secciones de informe, no puede utilizar una macro ni Visual Basic al establecer la propiedad Altura (Height) para imprimir o ver una vista previa de un informe. Para los controles de informe, puede establecer las propiedades Altura (Height) y Anchura (Width) al imprimir o ver una vista previa de un informe solamente mediante una macro o un procedimiento de evento especificado en el valor de la propiedad del evento OnFormat.

No puede establecer estas propiedades para un objeto una vez que se ha iniciado el proceso de impresión. Por ejemplo, si se intenta establecer la propiedad Altura (Height) en el evento Print de un informe, se genera un error.

Comentarios

Microsoft Access establece automáticamente las propiedades Altura (Height) y Anchura (Width) al crear o cambiar de tamaño un control o cuando se cambia el tamaño de una ventana en la vista Diseño del formulario o en la vista Diseño del informe.

El alto de las secciones y el ancho de los formularios e informes se mide desde dentro de sus bordes. El alto y el ancho de los controles se mide desde el centro de sus bordes, de modo que los controles con diferentes anchos de borde se alineen correctamente. Los márgenes de los formularios e informes se establecen en el cuadro de diálogo Configurar página, disponible al elegir Configurar página en el menú Archivo.

Nota   Para establecer la ubicación izquierda y superior de un objeto, utilice las propiedades Izquierda (Left) y Superior (Top).


Ejemplo de las propiedades Altura (Height) y Anchura (Width)

El código siguiente cambia el tamaño de un botón de comando a un cuadrado de 1 pda por 1 pda (la unidad de medida predeterminada en Visual Basic; 1440 twips equivalen una pda):

Me!cmdBotónTamaño.Height = 1440	' 1440 twips = 1 inch.

Me!cmdBotónTamaño.Width = 1440


Propiedades Altura (Height) y Anchura (Width) - Se aplica a
Propiedades Altura (Height) y Anchura (Width) — Se aplica a

Propiedad Altura (Height)

Propiedad Anchura (Width)


Propiedades Etiqueta X y Etiqueta Y

Puede utilizar las propiedades Etiqueta X y Etiqueta Y para cambiar la posición de las etiquetas anexadas a controles nuevos. Por ejemplo, es posible que desee que una etiqueta anexada aparezca a la derecha de un control en lugar de a la izquierda.

Valores

Introduzca un número positivo o negativo que especifique la distancia del texto de etiqueta desde la esquina superior izquierda del control anexado de la etiqueta. Para utilizar una unidad de medida diferente del valor del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows, especifique la unidad, como cm o pda (por ejemplo, 2 cm o 1,5 pda).

Puede establecer estas propiedades sólo mediante el estilo de control predeterminado de un control o el método DefaultControl de Visual Basic.

Comentarios

La propiedad Etiqueta X establece la distancia en el eje horizontal y la propiedad Etiqueta Y establece la distancia en el eje vertical. Un número negativo para la propiedad Etiqueta X sitúa la esquina superior izquierda de la etiqueta a la izquierda del control. Un número negativo para la propiedad Etiqueta Y sitúa la esquina superior izquierda de la etiqueta sobre el control. Los números positivos de ambas propiedades sitúan la etiqueta a la derecha y por debajo de la esquina superior izquierda del control.

Si la propiedad Alinear etiquetas está establecida a Derecha o Izquierda, las propiedades Etiqueta X y Etiqueta Y especifican la distancia entre el extremo derecho o izquierdo de la etiqueta y la esquina superior izquierda del control. Si la propiedad Alinear etiquetas está establecida a Centro, las propiedades Etiqueta X y Etiqueta Y especifican la distancia entre el centro de la etiqueta y la esquina superior izquierda del control.

La combinación de las propiedades Etiqueta X, Etiqueta Y y Alinear etiquetas produce los siguientes resultados.

Etiqueta X	Etiqueta Y	Alinear etiquetas	Resultado
–1 pda	0 pda	General	La esquina superior izquierda de la etiqueta está situada una pulgada a la izquierda de la esquina superior izquierda del control.
–0,5 pda	0 pda	Derecha	La esquina superior derecha de la etiqueta está situada 0,5 pulgadas a la izquierda de la esquina superior izquierda del control.
0,5 pda	–0,5 pda	Centro	El centro de la parte superior de la etiqueta está situado 0,5 pulgadas a la derecha y 0,5 pulgadas sobre la esquina superior izquierda del control.


Propiedades Izquierda (Left) y Superior (Top) (Microsoft Access)
Propiedades Izquierda (Left) y Superior (Top)

Puede utilizar las propiedades Izquierda (Left) y Superior (Top) para especificar la ubicación de un objeto en un formulario o un informe. Por ejemplo, es posible que desee que un control esté siempre situado en la esquina superior derecha de una sección.

Valores

La posición de un control es la distancia medida desde su borde izquierdo o superior hasta el borde izquierdo o superior de la sección que contiene el control. El establecimiento de la propiedad Izquierda (Left) o Superior (Top) a 0 sitúa el extremo del control en el mismo borde izquierdo o superior de la sección. Para utilizar una unidad de medida diferente del valor del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows, especifique la unidad, como cm o pda (por ejemplo, 3 cm o 2 pda).

En Visual Basic, utilice una expresión numérica para establecer el valor de esta propiedad. Los valores se expresan en twips.

Para los controles, puede establecer estas propiedades mediante la hoja de propiedades de un control, una macro o Visual Basic.

Para los informes, puede establecer estas propiedades solamente mediante una macro o un procedimiento de evento en Visual Basic mientras el informe se encuentra en la Vista preliminar o se está imprimiendo.

Comentarios

Cuando se mueve un control, los nuevos valores de sus propiedades Izquierda (Left) y Superior (Top) se introducen automáticamente en la hoja de propiedades. Al ver un formulario o un informe en la Vista preliminar o al imprimir un formulario, la posición de un control está determinada por el valor de las propiedades Izquierda (Left) y Superior (Top) junto con los valores de márgenes del cuadro de diálogo Configurar página, disponible al elegir Configurar página en el menú Archivo.

Para los informes, el valor de la propiedad Superior (Top) es la cantidad que la sección actual se desplaza respecto a la parte superior de la página; el valor de la propiedad Izquierda (Left) es la cantidad que la sección actual se desplaza respecto al extremo izquierdo de la página. Ambos valores de propiedades se expresan en twips. Puede utilizar estas propiedades para especificar en qué lugar de la página desea que se imprima una sección en el procedimiento de evento Format de la sección.


Ejemplo de las propiedades Izquierda (Left) y Superior (Top)

El ejemplo siguiente comprueba el valor de la propiedad Izquierda (Left) para el informe actual. Si el valor es menor que el valor de margen mínimo, las propiedades RegistroSiguiente (NextRecord) e ImprimirSección (PrintSection) se establecen a False (0). La sección no avanza hasta el registro siguiente y la sección siguiente no se imprime.

Sub Detalle1_Format(Cancel As Integer, FormatCount As Integer)

Const conMargenIzdo = 1880

' No avanzar al siguiente registro ni imprimir la siguiente sección

' si el valor de la propiedad Izquierda (Left) es menor que 1880 twips.

If Me.Left < conMargenIzdo Then

Me.NextRecord = False

Me.PrintSection = False

End If

End Sub


Propiedad CentradoAutomático (AutoCenter)

La propiedad CentradoAutomático (AutoCenter) se utiliza para especificar si un formulario será centrado automáticamente en la ventana de la aplicación cuando se abra el formulario.

Valores

La propiedad CentradoAutomático (AutoCenter) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	El formulario será centrado automáticamente cuando se abra.	True (–1)
No	(Predeterminado) La esquina superior izquierda del formulario estará en la misma ubicación que cuando se guardó el formulario por última vez.	False (0)
Esta propiedad se puede establecer usando la hoja de propiedades del formulario, una macro o Visual Basic.

Esta propiedad sólo puede establecerse en la vista Diseño.

Observaciones

Dependiendo del tamaño y la colocación de la ventana de la aplicación, los formularios pueden aparecer por fuera de uno de los lados de la ventana de la aplicación, ocultando parte del mismo. Al centrar el formulario automáticamente cuando se abre hace que sea más fácil de ver y de usar.

Si realiza algún cambio en la vista Diseño a un formulario cuya propiedad AjusteDeTamañoAutomático (AutoResize) está establecida a No y cuya propiedad CentradoAutomático (AutoCenter) está establecida a Sí, debe cambiar a vista Formulario antes de guardar el formulario. Si no lo hace, Microsoft Access sujeta el formulario por los bordes derecho e inferior la siguiente vez que abra el formulario.


Propiedades IzquierdaSecciónActiva (CurrentSectionLeft) y SuperiorSecciónActiva (CurrentSectionTop)

Estas propiedades se utilizan para determinar la distancia en twips desde el borde superior y el lado izquierdo de la sección activa al borde superior y el lado izquierdo del formulario.

Valores

•	La propiedad IzquierdaSecciónActiva (CurrentSectionLeft). Un valor Entero que representa la distancia desde el borde izquierdo de la sección activa al borde izquierdo del formulario.

•	La propiedad SuperiorSecciónActiva (CurrentSectionTop). Un valor Entero que representa la distancia desde el borde superior de la sección activa al borde superior del formulario.

Estos valores de la propiedad son de sólo lectura y sólo están disponibles usando una macro o Visual Basic.

Observaciones

Los valores de las propiedades IzquierdaSecciónActiva (CurrentSectionLeft) y SuperiorSecciónActiva (CurrentSectionTop) cambian cada vez que un usuario se desplaza a través de un formulario.

Para los formularios cuya propiedad PresentaciónPredeterminada (DefaultView) está establecida a Formulario individual, si el usuario se desplaza por encima de la esquina superior izquierda de la sección o a la derecha del borde izquierdo del formulario, los valores de la propiedad serán valores negativos.

Para los formularios cuya propiedad PresentaciónPredeterminada (DefaultView) está establecida a Formularios continuos, si una sección no es visible, la propiedad SuperiorSecciónActiva (CurrentSectionTop) es igual a la propiedad InsideHeight del formulario.

Las propiedades IzquierdaSecciónActiva (CurrentSectionLeft) y SuperiorSecciónActiva (CurrentSectionTop) son útiles para buscar las posiciones de las secciones de detalles mostradas en la vista Formulario como formularios continuos o en la vista Hoja de datos. Cada sección de detalles tiene un valor de la propiedad SuperiorSecciónActiva (CurrentSectionTop) distinto, dependiendo de la posición de la sección en el formulario.


Ejemplo de propiedades IzquierdaSecciónActiva (CurrentSectionLeft) y SuperiorSecciónActiva (CurrentSectionTop)

El siguiente ejemplo muestra los valores de las propiedades IzquierdaSecciónActiva (CurrentSectionLeft) y SuperiorSecciónActiva (CurrentSectionTop) para un control de un formulario continuo. Cada vez que el usuario se mueve a un nuevo registro, los valores de la propiedad de la sección activa se muestran en la etiqueta lblStatus del encabezado del formulario.

Private Sub Form_Current()

Dim entCurTop As Integer, entCurLeft As Integer

entCurTop = Me.CurrentSectionTop

entCurLeft = Me.CurrentSectionLeft

Me!lblStatus.Caption = entCurLeft & " , " & entCurTop

End Sub


Propiedades AlturaDeLaVentana (WindowHeight) y AnchuraDeLaVentana (WindowWidth)

Estas propiedades se utilizan para devolver el alto y el ancho de un formulario en twips.

Valores

Los valores de las propiedades AlturaDeLaVentana (WindowHeight) y AnchuraDeLaVentana (WindowWidth) son valores de números Enteros.

Estos valores de las propiedades son de sólo lectura y sólo están disponibles usando una macro o Visual Basic.

Observaciones

La propiedad AlturaDeLaVentana (WindowHeight) se mide desde la esquina superior izquierda del formulario hasta su esquina inferior izquierda. La propiedad AnchuraDeLaVentana (WindowWidth) se mide desde la esquina superior izquierda del formulario hasta su esquina superior derecha.


Propiedad OrigenDelControl (ControlSource)

La propiedad OrigenDelControl (ControlSource) se puede utilizar para especificar qué datos aparecen en un control. Se pueden mostrar y editar datos dependientes de un campo en una tabla, consulta o instrucción SQL. También se puede mostrar el resultado de una expresión. Para un nivel de grupo de informe, la propiedad OrigenDelControl (ControlSource) determina el campo o expresión por el que agrupar.

Nota   La propiedad OrigenDelControl (ControlSource) no se aplica a los controles de casillas de verificación, botones de opción o botones de alternar incluidos en un grupo de opciones. Sólo se aplica al propio grupo de opciones.

En el caso de los informes, la propiedad OrigenDelControl (ControlSource) sólo se aplica a los niveles de grupo del informe.

Valores

La propiedad OrigenDelControl (ControlSource) tiene los siguientes valores:

Valor	Descripción
Un nombre de campo	El control es dependiente de un campo en una tabla, consulta o instrucción SQL. Los datos del campo se muestran en el control. Los cambios a los datos dentro del control hacen que se cambien los datos correspondiente en el campo. (Para hacer que el control sea de sólo lectura, establezca la propiedad Bloqueado (Locked) a Sí.) Si hace clic en un control dependiente para un campo que tiene un tipo de dato Hipervínculo, irá al destino especificado en la dirección del hipervínculo.
Una expresión	El control muestra los datos generados por una expresión. Estos datos pueden ser cambiados por el usuario pero no se guardan en la base de datos.
La propiedad OrigenDelControl (ControlSource) se puede establecer para un control usando la hoja de propiedades del control, con una macro o usando Visual Basic.

También se puede establecer la propiedad OrigenDelControl (ControlSource) para un cuadro de texto escribiendo un nombre de campo o expresión directamente en el cuadro de texto en la vista Diseño del formulario o en la vista Diseño del informe.

Para un informe, se puede establecer esta propiedad seleccionando un campo o escribiendo una expresión en la columna Campo/expresión del cuadro Ordenar y agrupar . Para obtener más detalles, consulte la propiedad GroupLevel.

En Visual Basic, utilice una expresión de cadena para establecer el valor de esta propiedad.

Comentarios

Los formularios e informes actúan como “ventanas” de su base de datos. El origen principal de los datos para un formulario o informe se especifica estableciendo su propiedad OrigenDelRegistro (RecordSource) a una tabla, consulta o instrucción SQL. A continuación puede establecer la propiedad OrigenDelControl (ControlSource) a un campo en el origen de los datos o a una expresión. Si el valor de la propiedad OrigenDelControl (ControlSource) es una expresión, el valor que se muestra es de sólo lectura y no se guarda en la base de datos. Por ejemplo, puede utilizar los siguientes valores:

Valores de ejemplo	Descripción
Apellido	Para un control, los datos del campo Apellido se muestran en el control. Para un nivel de grupo de informe, Microsoft Access agrupa los datos sobre el apellido.
=Fecha( ) + 7	Para un control, esta expresión muestra una fecha que es siete días a partir del día de hoy en el control.
=ParteFecha("q",FechaEnviado)	Para un control, esta expresión muestra el trimestre de la fecha de envío. Para un nivel de grupo de informe, Microsoft Access agrupa los datos en el trimestre de la fecha del envío.


Ejemplo de la propiedad OrigenDelControl (ControlSource)

El siguiente ejemplo establece la propiedad OrigenDelControl (ControlSource) para un cuadro de texto llamado ParteDirección a un campo llamado Ciudad.

Forms!Clientes!ParteDirección.ControlSource = "Ciudad"

El siguiente ejemplo establece la propiedad OrigenDelControl (ControlSource) para un cuadro de texto llamado Esperado a la expresión =Fecha() + 7.

Me!Esperado.ControlSource = "=Fecha() + 7"


Propiedad ValorDeLaOpción (OptionValue)

Cada control de un grupo de opciones tiene un valor numérico que se puede establecer con la propiedad ValorDeLaOpción (OptionValue). Cuando se selecciona el control, el número se asigna al grupo de opciones. Si el grupo de opciones es dependiente de un campo, el valor de la propiedad ValorDeLaOpción (OptionValue) del control seleccionado se almacena en el campo.

Por ejemplo, este grupo de opciones Región es dependiente del campo Región de una tabla. El botón Europa tiene en la propiedad ValorDeLaOpción (OptionValue) el valor 1, el botón Asia tiene el valor 2 y el botón África tiene el valor 3. Cuando se selecciona uno de estos botones, el valor del grupo de opciones Región será el mismo que el valor de la propiedad ValorDeLaOpción (OptionValue) para el control seleccionado. En este caso, puesto que el grupo de opciones Región es dependiente del campo Región, el valor de este campo en la tabla es igual a 2.

Nota   La propiedad ValorDeLaOpción (OptionValue) sólo se aplica a los controles de las casillas de verificación, botones de opción y botones de alternar en un grupo de opciones.

Valores

La propiedad ValorDeLaOpción (OptionValue) contiene un valor Entero largo o una expresión numérica asignada a un control dentro de un control de un grupo de opciones.

La propiedad ValorDeLaOpción (OptionValue) se puede establecer usando la hoja de propiedades de un control, con una macro o usando Visual Basic.

Comentarios

A menos que cambie usted mismo la propiedad ValorDeLaOpción (OptionValue), el primer control que se coloque en un grupo de opciones tiene un valor de 1, el segundo control un valor de 2, y así sucesivamente.

La propiedad ValorDeLaOpción (OptionValue) sólo está disponible cuando el control se coloca dentro de un control de grupo de opciones. Cuando una casilla de verificación, un botón de alternar o un botón de opción no está en un grupo de opciones, el control no tiene la propiedad ValorDeLaOpción (OptionValue). En su lugar, cada control de dicho tipo tiene una propiedad OrigenDelControl (ControlSource) y el valor de cada control será o bien True (-1) si está seleccionado o False (0) si no lo está.


Propiedad OrigenDelRegistro (RecordSource)

La propiedad OrigenDelRegistro (RecordSource) se puede utilizar para especificar el origen de los datos para un formulario o informe. Se pueden mostrar los datos de una tabla, consulta o instrucción SQL. Por ejemplo, para mostrar y editar los datos de la tabla Empleados en un formulario, se establece la propiedad OrigenDelRegistro (RecordSource) del formulario a Empleados. A continuación se pueden hacer depender los controles del formulario o informe a los campos especificados de la tabla Empleados estableciendo la propiedad OrigenDelControl (ControlSource) del control al nombre de un campo de la tabla. Por ejemplo, puede hacer depender un  control al campo Apellido en la tabla Empleados estableciendo a Apellido la propiedad OrigenDelControl (ControlSource) del control.

Valores

El valor de la propiedad OrigenDelRegistro (RecordSource) puede ser un nombre de tabla, un nombre de una consulta o una instrucción SQL. Por ejemplo, se pueden utilizar los siguientes valores:

Valores de ejemplo	Descripción
Empleados	Un nombre de la tabla que especifica la tabla Empleados como el origen de los datos.
SELECT Pedidos.FechaPedido FROM Pedidos;	Una instrucción SQL que especifica el campo FechaPedido en la tabla Pedidos como el origen de los datos. Puede obligar a un control en un formulario o informe al campo FechaPedido en la tabla Pedidos estableciendo la propiedad OrigenDelControl (ControlSource) del control a FechaPedido.
La propiedad OrigenDelRegistro (RecordSource) se puede establecer usando la hoja de propiedades del formulario o informe, con una macro o usando Visual Basic.

En Visual Basic, utilice una expresión de cadena para establecer esta propiedad.

Nota   Cambiar el origen del registro de un formulario o informe abierto causa una NuevaConsulta (Requery) automática de los datos bases.

Comentarios

Después de que se haya creado un formulario o informe, se puede cambiar su origen de los datos cambiando la propiedad OrigenDelRegistro (RecordSource). La propiedad OrigenDelRegistro (RecordSource) también es útil si se desea crear un formulario o informe reutilizable. Por ejemplo, se podría crear un formulario que incorpore un diseño estándar, luego copiar el formulario y cambiar la propiedad OrigenDelRegistro (RecordSource) para mostrar datos de una tabla, consulta o instrucción SQL diferente.

La limitación del número de registros contenidos en el origen del registro de un formulario puede mejorar el rendimiento, especialmente cuando su aplicación se ejecuta en una red. Por ejemplo, se puede establecer la propiedad OrigenDelRegistro (RecordSource) del formulario una instrucción SQL que devuelva un registro individual y cambiar el origen del registro del formulario dependiendo del criterio seleccionado por el usuario.


Ejemplo de la propiedad OrigenDelRegistro (RecordSource)

El siguiente ejemplo establece la propiedad OrigenDelRegistro (RecordSource) de un formulario a la tabla Clientes.

Forms!frmCustomers.RecordSource = "Clientes"

El siguiente ejemplo cambia el origen del registro de un formulario a un registro individual de la tabla Clientes, dependiendo del nombre de la compañía seleccionado en el control del cuadro combinado cmboNombreCompañía. El cuadro combinado se rellena mediante una instrucción SQL que devuelve la Id del cliente (en la columna dependiente) y el nombre de la compañía. El campo IdCliente tiene un tipo de datos Texto.

Sub cmboNombreCompañía_DespuésDeActualizar()

Dim cadNuevoRegistro As String

cadNuevoRegistro = "SELECT * FROM Clientes "

& " WHERE IdCliente = '" _

& Me!cmboNombreCompañía.Value & "'"

Me.RecordSource = cadNuevoRegistro

End Sub


Propiedades TipoDeOrigenDeLaFila (RowSourceType) y OrigenDeLaFila (RowSource)

Las propiedades TipoDeOrigenDeLaFila (RowSourceType) y OrigenDeLaFila (RowSource) se pueden utilizar juntas para mostrar a Microsoft Access cómo suministrar datos a un cuadro de lista, a cuadro combinado o un objeto OLE no dependiente, como por ejemplo un gráfico. Por ejemplo, para mostrar filas de datos en un cuadro de lista desde una consulta llamada ListaClientes, configure la propiedad RowSourceType del cuadro de lista a Tabla/Consulta y su propiedad OrigenDeLaFila (RowSource) a la consulta llamada ListaClientes.

Valores

La propiedad TipoDeOrigenDeLaFila (RowSourceType) utiliza los siguientes valores.

Valor	Descripción
Tabla/Consulta	(Predeterminado) Los datos son de una tabla, consulta o instrucción SQL especificados por el valor de OrigenDeLaFila(RowSource).
Lista de valores	Los datos son una lista de elementos especificados por el valor de OrigenDeLaFila(RowSource).
Lista de campos	Los campos son una lista de nombres de campos de una tabla, consulta o instrucción SQL especificados por el valor de OrigenDeLaFila(RowSource).
Nota   La propiedad TipoDeOrigenDeLaFila (RowSourceType) se puede también establecer con una función definida por el usuario. El nombre de la función se introduce sin que le preceda un signo igual (=) y sin que le siga el par de paréntesis. Es necesario suministrar los argumentos de código específicos de la función para indicar a Microsoft Access cómo rellenar el control.

El valor de la propiedad OrigenDeLaFila (RowSource) depende del valor de la propiedad TipoDeOrigenDeLaFila (RowSourceType).

Para establecer el valor de  TipoDeOrigenDeLaFila  (RowSourceType)	Introduzca en OrigenDeLaFila (RowSource)
Tabla/consulta	Un nombre de tabla, un nombre de consulta o una instrucción SQL.
Lista de valores	Una lista de elementos usando puntos y comas (;) como separadores.
Lista de campos	Un nombre de tabla, un nombre de consulta o una Instrucción SQL.
Nota   Si la propiedad TipoDeOrigenDeLaFila (RowSourceType) se establece a una función definida por el usuario, la propiedad OrigenDeLaFila (RowSource) puede dejarse en blanco.

Las propiedades TipoDeOrigenDeLaFila (RowSourceType) y OrigenDeLaFila (RowSource) se pueden establecer usando la hoja de propiedades del control, con una macro o usando Visual Basic.

Para los campos de tabla, estas propiedades se pueden establecer en la ficha Buscar en la sección Propiedades del campo de la vista Diseño de la tabla para los campos estableciendo la propiedad Mostrar control a un cuadro combinado o cuadro de lista.

Nota   Microsoft Access establece estas propiedades automáticamente cuando se selecciona el Asistente para consultas como el tipo de datos para un campo en la vista Diseño de la tabla.

En Visual Basic, establezca la propiedad TipoDeOrigenDeLaFila (RowSourceType) usando una expresión de cadena con uno de estos valores: "Tabla/consulta", "Lista de valores" o "Lista de campos". Una expresión de cadena también se usa para establecer el valor de la propiedad OrigenDeLaFila (RowSource). Para establecer la propiedad TipoDeOrigenDeLaFila (RowSourceType) a una función definida por el usuario, introduzca el nombre de la función.

Comentarios

Cuando se tiene un número limitado de valores que no cambian, se puede establecer la propiedad TipoDeOrigenDeLaFila (RowSourceType) a Lista de valores y luego introducir los valores que conforman la lista en la propiedad OrigenDeLaFila (RowSource).

Cuando se crea una función definida por el usuario para insertar elementos en un cuadro de lista o cuadro combinado, Microsoft Access llama a la función repetidamente para obtener la información que necesita. Las funciones TipoDeOrigenDeLaFila (RowSourceType) definidas por el usuario deben ser escritas en un formato de función muy específico.


Ejemplo de las propiedades TipoDeOrigenDeLaFila (RowSourceType) y OrigenDeLaFila (RowSource) - Valores
Ejemplo de las propiedades TipoDeOrigenDeLaFila (RowSourceType) y OrigenDeLaFila (RowSource) — Valores

Los siguientes ejemplos muestran valores de ejemplo de la propiedad OrigenDeLaFila (RowSource) para cada valor de la propiedad TipoDeOrigenDeLaFila (RowSourceType).

Cuando la propiedad TipoDeOrigenDeLaFila (RowSourceType) tiene el valor Lista de valores

Si la propiedad TipoDeOrigenDeLaFila (RowSourceType) se establece a Lista de valores, la tabla siguiente muestra valores válidos para las propiedades OrigenDeLaFila (RowSource) y NúmeroDeColumnas (ColumnCount) y una ilustración de la lista resultante.

Valor de OrigenDeLaFila (RowSource)	Lista
Lun;Mar;Mie (ColumnCount = 1)	Una lista de una columna con tres filas
1;Lunes;2;Martes;3;Miércoles;4;Jueves (ColumnCount = 2)	Una lista de dos columnas con cuatro filas
País;Capital;China;Beijing;Brasil;Brasilia (ColumnCount = 2, EncabezadosDeColumnas = Sí)	Una lista de dos columnas con una fila de encabezados de columnas y dos filas de datos
Cuando la propiedad TipoDeOrigenDeLaFila (RowSourceType) tiene el valor Tabla/Consulta

Si la propiedad TipoDeOrigenDeLaFila (RowSourceType) se establece a Tabla/consulta, se puede establecer la propiedad OrigenDeLaFila (RowSource) a un nombre de una tabla o consulta — por ejemplo, ListaCategorías.

La siguiente es una instrucción SQL válida para una lista de dos columnas sacadas de la tabla de Categorías:

SELECT IdCategoría, NombreCategoría FROM Categorías ORDER BY NombreCategoría;

Si la consulta ListaCategoría y la instrucción SQL definen al mismo conjunto de registros, la lista de cada valor de las propiedades se asemejará a la siguiente ilustración.

Cuando la propiedad TipoOrigenDeLaFila (RowSourceType) tiene el valor Lista de campos

Si la propiedad TipoDeOrigenDeLaFila (RowSourceType) se establece a Lista de campos y la propiedad OrigenDeLaFila (RowSource) a ListaClientes (la consulta descrita en el ejemplo anterior), la lista resultante se parecerá a la siguiente ilustración.

Cuando la propiedad TipoDeOrigenDeLaFila (RowSourceType) tiene el valor Función definida por el usuario

Si la propiedad TipoDeOrigenDeLaFila (RowSourceType) se establece al nombre de una función definida por el usuario, entonces el valor de la propiedad OrigenDeLaFila (RowSource) puede ser dejada en blanco. Por ejemplo, una función definida por el usuario llamada ListarMDBs que rellena un cuadro combinado con los nombres de todas las bases de datos del directorio actual es introducida en la hoja de propiedades como indica la siguiente ilustración.


Ejemplo de las propiedades TipoDeOrigenDeLaFila (RowSourceType) y OrigenDeLaFila (RowSource) - Visual Basic
Ejemplo de las propiedades TipoDeOrigenDeLaFila (RowSourceType) y OrigenDeLaFila (RowSource) — Visual Basic

El siguiente ejemplo establece Tabla/consulta en la propiedad TipoDeOrigenDeLaFila (RowSourceType) para un cuadro combinado y establece un nombre de consulta llamado ListaEmpleados en la propiedad OrigenDeLaFila (RowSource).

Forms!Empleados!cmboNombres.RowSourceType = "Tabla/consulta"

Forms!Empleados!cmboNombres.RowSource = "ListaEmpleados"


Propiedad OrigenDeLaFila (RowSourceType) (Función definida por el usuario) - Valores de los argumentos Code
Propiedad OrigenDeLaFila (RowSourceType) (Función definida por el usuario) — Valores de los argumentos Code

La función de Visual Basic que usted cree debe aceptar cinco argumentos. El primer argumento debe ser declarado como control y los restantes como Variants. La propia función debe devolver una Variant.

Sintaxis

Function nombrefunción(fld As Control, id As Variant, fila As Variant, col As Variant, código As Variant) As Variant

El procedimiento Function tiene los siguientes cinco argumentos requeridos.

Argumento	Descripción
fld	Una variable de control que hace referencia al cuadro de lista o cuadro combinado que se está rellenando.
çId	Un valor único que identifica el control que se rellena. Esto es útil cuando se desee utilizar la misma función definida por el usuario para más de un cuadro de lista o cuadro combinado y sea necesario distinguir entre ellas. (El ejemplo establece esta variable al valor de la función Cronómetro (Timer).)
fila	La fila que se está rellenando (basado en ceros).
Col	La columna que se está rellenando (basado en ceros).
código	Una constante intrínseca que especifica la clase de información que se pide.
Nota   Puesto que Microsoft Access llama a una función definida por el usuario varias veces para insertar elementos en una lista, a menudo es necesario preservar la información de una llamada a otra. La mejor forma de hacer esto es utilizar variables Static.

Microsoft Access llama repetidamente a la función definida por el usuario utilizando valores diferentes en el argumento código para especificar la información que necesita. El argumento código puede utilizar las siguientes constantes intrínsecas.

Constante	Significado	Valor devuelto por la función
acLBInitialize	Inicializar	No-cero si la función puede rellenar la lista; False (0) o Null en caso contrario.
acLBOpen	Abrir	Valor de Id. no-cero si la función puede rellenar la lista; False o Null en caso contrario.
acLBGetRowCount	Número de filas	Número de filas en la lista (puede ser cero); -1 si desconocido.
AcLBGetColumnCount	Número de columnas	Número de columnas en la lista (no puede ser cero); debe coincidir con la configuración de la hoja de propiedades.
acLBGetColumnWidth	Ancho de la columna	Ancho (en twips) de la columna especificada por el argumento col; -1 para utilizar el ancho predeterminado.
AcLBGetValue	Entrada de lista	Entrada de la lista para ser mostrada en la fila y columna especificada por los argumentos fila y col.
acLBGetFormat	Cadena de formato	Cadena de formato para ser utilizada para dar formato a la entrada de la lista mostrada en la fila y columna especificada por los argumentos fila y col; o -1 para utilizar el formato predeterminado.
acLBEnd	Fin (la última llamada a una función definida por el usuario siempre utiliza este valor)	Nada.
acLBClose	(No usado)	(No usado)
Microsoft Access llama a las funciones definidas por el usuario una vez por acLBInitialize, acLBOpen, acLBGetRowCount, y acLBGetColumnCount. Inicializa la función definida por el usuario, abre la consulta y determina el número de filas y columnas.

Microsoft Access llama a la función definida por el usuario dos veces por acLBGetColumnWidth — una vez para determinar el ancho total del cuadro de lista o cuadro combinado y una segunda vez para establecer el ancho de la columna.

El número de veces que la función definida por el usuario es llamada por acLBGetValue y acLBGetFormat para obtener las entradas de la lista y para dar formato a las cadenas de formato varía dependiendo del número de entradas, el desplazamiento del usuario y otros factores.

Microsoft Access llama a la función definida por el usuario para acLBEnd cuando se cierra el formulario o cada vez que el cuadro de lista o cuadro combinado sea consultado.

Cuando se requiera un valor en particular (como por ejemplo el número de columnas), la devolución de Null o de cualquier valor no válido hace que Microsoft Access detenga la llamada de la función definida por el usuario con ese código.

Sugerencia   La estructura del código Seleccionar caso del ejemplo se puede utilizar como una plantilla de la propiedad TipoDeOrigenDeLaFila (RowSourceType) de la funciones definidas por el usuario.


Propiedad TipoDeOrigenDeLaFila (RowSourceType) (Función definida por el usuario) - Ejemplo de valores de los argumentos Code
Propiedad TipoDeOrigenDeLaFila (RowSourceType) (Función definida por el usuario) — Ejemplo de valores de los argumentos de código

La siguiente función definida por el usuario devuelve una lista de los siguientes cuatro Lunes que siguen a la fecha de hoy. Para llamar a esta función desde un control cuadro de lista, introduzca ListarLunes como el valor de la propiedad TipoDeOrigenDeLaFila (RowSourceType) y deje en blanco el valor de la propiedad OrigenDeLaFila (RowSource).

Function ListarLunes(fld As Control,id As Variant,fila As Variant,col As Variant,código As Variant) As Variant

Dim intOffset As Integer

Select Case código

Case acLBInitialize	' Inicializar.

ListarLunes = True

Case acLBOpen	' Abrir.

ListarLunes = Timer	' Generar Id única para control.

Case acLBGetRowCount	' Obtener número de filas.

ListarLunes = 4

Case acLBGetColumnCount	' Obtener número de columnas.

ListarLunes = 1

Case acLBGetColumnWidth	' Obtener ancho de columna.

ListarLunes = -1	' -1 fuerza el uso de ancho

' predeterminada.

Case acLBGetValue	' Obtener los datos.

intOffset = Abs((9 - Weekday(Now))Mod 7)

ListarLunes = Format(Now() + intOffset + 7 * fila,"mmmm d")

End Select

End Function

El siguiente ejemplo utiliza una matriz estática para almacenar los nombres de las bases de datos en el directorio actual. Para llamar a esta función, introduzca ListMDBs como el valor de la propiedad TipoDeOrigenDeLaFila (RowSourceType) y deje en blanco el valor de la propiedad OrigenDeLaFila (RowSource).

Function ListarMDBs(fld As Control, id As Variant, fila As Variant, col As Variant, código As Variant) As Variant

Static dbs(127)As String, Entradas As Integer

Dim ValorDevuelto As Variant

Dim ValorDevuelto

ValorDevuelto = Null

Select Case código

Case acLBInitialize	' Inicializar.

Entradas = 0

dbs(Entradas ) = Dir("*.MDB")

Do Until dbs(Entradas) = "" Or Entradas >= 127

Entradas = Entradas+1

dbs(Entradas) = Dir

Loop

ValorDevuelto = Entradas

Case acLBOpen	' Abrir.

ValorDevuelto = Timer	' Generar Id única para control.

Case acLBGetRowCount	' Obtener número de filas.

ValorDevuelto = Entradas

Case acLBGetColumnCount	' Obtener número de columnas.

ValorDevuelto = 1

Case acLBGetColumnWidth	' Ancho de columna.

ValorDevuelto = -1	' -1 fuerza el uso de ancho

' predeterminada.

Case acLBGetValue	' Obtener datos.

ValorDevuelto = dbs(fila)

Case acLBEnd	' Fin.

Erase dbs

End Select

ListarMDBs = ValorDevuelto

End Function


Propiedad SumaContinua (RunningSum)

La propiedad SumaContinua (RunningSum) se puede utilizar para calcular los totales registro a registro o grupo a grupo de un informe. La propiedad SumaContinua (RunningSum) especifica si un cuadro de texto en un informe muestra un subtotal y le permite establecer el intervalo en el que se acumulan los valores. Por ejemplo, puede agrupar los datos por meses y mostrar la suma de las ventas de cada mes en el pie de página del grupo. Se puede mostrar la suma continua de las ventas acumuladas del informe completo (ventas de Enero en el pié de página de Enero, ventas de Enero más Febrero en el pié de página de Febrero y así sucesivamente) agregando un cuadro de texto al pie de página que muestre la suma de las ventas y configurando su propiedad SumaContinua (RunningSum) a Sobre todo.

Nota   La propiedad SumaContinua (RunningSum) sólo se aplica a un cuadro de texto en un informe.

Valores

La propiedad SumaContinua (RunningSum) utiliza los siguientes valores:

Valor	Descripción)	Visual Basic
No	(Predeterminado) El cuadro de texto muestra los datos del campo base para el registro activo.	0
Sobre grupo	El cuadro de texto muestra una suma continua de los valores del mismo nivel de grupo. El valor acumula hasta que se encuentre otra sección de nivel de grupo.	1
Sobre todo	El cuadro de texto muestra una suma continua de valores en el mismo nivel de grupo. El valor se acumula hasta el final del informe.	2
La propiedad SumaContinua (RunningSum) se puede establecer usando la hoja de propiedades del cuadro de texto, con una macro o usando Visual Basic. La propiedad SumaContinua (RunningSum) sólo se puede establecer en la vista Diseño.

Comentarios

Coloque el cuadro de texto en la sección de detalles para calcular un total registro a registro. Por ejemplo, para numerar los registros que aparecen en una sección de detalles de un informe, establezca la propiedad OrigenDelControl (ControlSource) para el cuadro de texto a "=1" y establezca la propiedad SumaContinua (RunningSum) a Sobre grupo.

Coloque el cuadro de texto en un encabezado de grupo o pie de página del grupo para calcular un total grupo a grupo.

Es posible tener hasta 10 niveles de grupos anidados en un informe.


Ejemplo de la propiedad SumaContinua (RunningSum) - Informe de Ventas
Ejemplo de la propiedad SumaContinua (RunningSum) — Informe de Ventas

El siguiente ejemplo muestra un informe de ventas con dos niveles de grupo, Mes y Tipo de comida. Cada cuadro de texto en el pie de página del grupo Tipo de comida (Enero Chocolates, Enero Carne, etc.) contiene la siguiente expresión:

=Sum([Ventas])

La propiedad SumaContinua (RunningSum) de cada cuadro de texto se establece a uno de los siguientes tres valores: No, Sobre grupo y Sobre todo.

Niveles de grupo	No	Sobre grupo	Sobre todo

Mes: Enero

Tipo de comida: Chocolates

02-Ene	25
22-Ene	75
Enero Chocolates	100	Ene Comida 100		YTD Ventas 100

Tipo de comida: Carne

03-Ene	90
20-Ene	60
Enero Carne	150	Ene Comida 250		YTD Ventas 250

Mes: Febrero

Tipo de comida: Chocolates
05-Feb	70
19-Feb	80
Febrero Chocolates	150	Feb Comida 150	YTD Ventas 400

Tipo de comida: Carne

12-Feb	150
22-Feb	100
Febrero Carne	250	Feb Comida 400	YTD Ventas 650


Ejemplo de la propiedad SumaContinua (RunningSum) - Visual Basic
Ejemplo de la propiedad SumaContinua (RunningSum) — Visual Basic

El siguiente ejemplo establece la propiedad SumaContinua (RunningSum) para un cuadro de texto llamado TotalVentas a 2 (Sobre todo).

Reports!rptVentas!TotalVentas.RunningSum = 2


Propiedad Modificado (Dirty)

La propiedad Modificado (Dirty) se puede utilizar para determinar si el registro activo ha sido modificado desde que se guardó por última vez. Por ejemplo, puede que desee preguntar al usuario si los cambios que se hicieron en un registro eran intencionados y, si no es así, permitirle que se mueva al siguiente registro sin guardar los cambios.

Valores

La propiedad Modificado (Dirty) puede tener los siguientes valores:

Valor	Descripción	Visual Basic
Verdadero	El registro activo ha sido modificado.	Verdadero (True) (–1)
Falso	El registro activo no ha sido modificado.	Falso (False) (0)
Esta propiedad está disponible en la vista Formulario y en la vista Hoja de datos.

Esta propiedad se lee o establece con una macro o en Visual Basic.

Comentarios

Cuando se guarda un registro, Microsoft Access establece Falso (False) en la propiedad Modificado (Dirty). Cuando un usuario realiza cambios en un registro, en la propiedad se establece Verdadero (True).


Ejemplo de la propiedad Modificado (Dirty)

En el ejemplo siguiente se activa el botón btnDeshacer cuando se modifican datos. La subrutina DeshacerEdiciones( ) es llamada desde el evento AfterUpdate de los controles cuadro de texto. Haciendo clic en el botón btnDeshacer se restablece el valor original del control utilizando la propiedad ValorAnterior (OldValue).

Sub DeshacerEdiciones()

If Me.Dirty Then

Me!btnDeshacer.Enabled = True	' Activar botón.

Else

Me!btnDeshacer.Enabled = False	' Desactivar botón.

End If

End Sub

Sub btnDeshacer_Click()

Dim ctlC As Control

' Para cada control.

For Each ctlC in Me.Controls

If ctlC.ControlType = acTextBox Then

' Restablecer el valor anterior.

ctlC.Value = ctlC.OldValue

End If

Next ctlC

End Sub


Propiedad Permitir longitud cero (AllowZeroLength) (Microsoft Access)
Propiedad Permitir longitud cero (AllowZeroLength)

Puede usar la propiedad Permitir longitud cero (AllowZeroLength) para especificar si una cadena de longitud cero (" ") es una entrada válida para un campo de una tabla.

Nota   La propiedad Permitir longitud cero (AllowZeroLength) sólo se aplica a los campos de tipo texto, memo e hipervínculo.

Valores

La propiedad Permitir longitud cero (AllowZeroLength) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	Una cadena de longitud cero es una entrada válida.	True (–1)
No	(Predeterminado) Una cadena de longitud cero no es una entrada válida.	False (0)
Puede establecer esta propiedad en la hoja de propiedades de la tabla o con Visual Basic.

Nota   Para tener acceso a la propiedad Permitir longitud cero (AllowZeroLength) de un campo con Visual Basic, utilice la propiedad AllowZeroLength del objeto DAO.

Comentarios

Si desea que Microsoft Access almacene una cadena de longitud cero en lugar del valor Nulo cuando se deja un campo en blanco, establezca a Sí las propiedades Permitir longitud cero (AllowZeroLength) y Requerido (Required).

En la tabla siguiente se indica el resultado de las combinaciones de los valores de las propiedades Permitir longitud cero (AllowZeroLength) y Requerido (Required).

Permitir longitud cero (AllowZeroLength)	Requerido (Required)	Acción del usuario	Valor almacenado
No	No	Presionar ENTRAR Presionar ESPACIO Introducir una cadena de longitud cero	Nulo Nulo (no permitido)
Sí	No	Presionar ENTRAR Presionar ESPACIO Introducir una cadena de longitud cero	Nulo Nulo Cadena de longitud cero
No	Sí	Presionar ENTRAR Presionar ESPACIO Introducir una cadena de longitud cero	(no permitido)  (no permitido) (no permitido)
Sí	Sí	Presionar ENTRAR Presionar ESPACIO Introducir una cadena de longitud cero	(no permitido)  Cadena de longitud cero Cadena de longitud cero
Sugerencia   Puede utilizar la propiedad Formato (Format) cuando introduce datos en un campo para distinguir entre la presentación de un valor Nulo y la de una cadena de longitud cero. Por ejemplo, puede mostrarse la cadena "Ninguno" cuando se introduce una cadena de longitud cero.

La propiedad Permitir longitud cero (AllowZeroLength) es independiente de la propiedad Requerido (Required), que sólo determina si es válido el valor Nulo para el campo. Si Permitir longitud cero (AllowZeroLength) tiene el valor Sí, será válida para el campo una cadena de longitud cero, independientemente del valor de la propiedad Requerido (Required).


Propiedad Título (Caption) (Microsoft Access)
Propiedad Título (Caption)

Puede usar la propiedad Título (Caption) para proporcionar información útil al usuario mediante de títulos sobre los objetos en distintas vistas:

•	Los títulos de campos especifican el texto de las etiquetas adjuntas a los controles creados al arrastrar un campo desde la lista de campos, y sirven como encabezados de columna para los campos en la vista Hoja de datos de una tabla o consulta.

•	Los títulos de formularios especifican el texto que aparece en la barra de título en la vista Formulario.

•	Los títulos de informes especifican el título del informe en la Vista preliminar.

•	Los títulos de botones y etiquetas especifican el texto que aparece en el control.

Valores

La propiedad Título (Caption) es una expresión de cadena que puede contener hasta 2.042 caracteres. Se truncarán los títulos de los formularios e informes que sean demasiado largos para mostrarlos en la barra de título.

En el caso de los controles, puede establecer esta propiedad en la hoja de propiedades. Para establecerla para los campos, utilice la hoja de propiedades en la vista Diseño de tabla o en la ventana Consulta (en la hoja de propiedades Propiedades del campo). También puede establecer esta propiedad con una macro o con Visual Basic.

Comentarios

Si no especifica un título para un campo de una tabla, se usará el valor de la propiedad Nombre del campo de ese campo como título de una etiqueta adjunta a un control o como encabezado de columna en la vista Hoja de datos. Si no especifica el título de un campo de una consulta, se usará el del campo de la tabla base. Si no establece el título de un formulario, botón o etiqueta, Microsoft Access le asignará un nombre único basándose en el tipo de objeto, como por ejemplo "Formulario1".

Si crea un control arrastrando un campo desde la lista de campos y no ha especificado un valor para la propiedad Título (Caption) del mismo, se copiará el valor de la propiedad Nombre del campo del campo en el cuadro de la propiedad Nombre (Name) del control, y por ello aparecerá en la etiqueta del control creado.

Nota   El texto de la propiedad Título (Caption) para un control etiqueta o botón de comando es el texto de presentación de hipervínculo cuando se ha establecido la propiedad DirecciónDeHipervínculo (HyperlinkAddress) o SubdirecciónDeHipervínculo (HyperlinkSubAddress) del control.

Puede usar la propiedad Título (Caption) para asignar una tecla de acceso a una etiqueta o botón de comando. En el título, incluya un signo "&" inmediatamente antes del carácter que desee utilizar como tecla de acceso. Este carácter aparecerá subrayado. Puede presionar ALT y el carácter subrayado del control para desplazar el enfoque a dicho control en un formulario.

Sugerencia   Si desea incluir un signo "&" en el título, escirba dos caracteres "&" en el título. Por ejemplo, para que aparezca "Guardar & Salir", deberá escribir Guardar && Salir en el cuadro de la propiedad Título (Caption).


Propiedad Tipo de datos

Puede usar la propiedad Tipo de datos para especificar el tipo de datos almacenado en un campo de una tabla. Cada campo sólo puede contener datos de un tipo.

Valores

La propiedad Tipo de datos puede tener los valores siguientes:

Valor	Tipo de datos	Tamaño
Texto	(Predeterminado) Texto o combinaciones de texto y números, así como números que no requieran cálculos, como los números de teléfono.	Hasta 255 caracteres o la longitud que indique la propiedad Tamaño del campo (el menor de los dos valores). Microsoft Access no reserva espacio para la parte que no se utiliza de un campo de texto.
Memo	Texto extenso, o combinación extensa de texto y números.	Hasta 65.535 caracteres. (Si el campo se manipula a través de DAO y sólo se va a almacenar en él texto y números [no datos binarios], el tamaño está limitado por el de la base de datos).
Numérico	Datos numéricos utilizados en cálculos matemáticos. Para obtener más información sobre la forma de establecer un tipo numérico específico, vea el tema de la propiedad Tamaño del campo.	1, 2, 4 u 8 bytes (16 bytes si el valor de la propiedad Tamaño del campo es Id. de réplica).
Fecha/Hora	Valores de fecha y hora para los años del 100 al 9999.	8 bytes.
Moneda	Valores de moneda y datos numéricos utilizados en cálculos matemáticos en los que estén implicados datos que contengan entre uno y cuatro decimales. La precisión es de hasta 15 dígitos a la izquierda del separador decimal y hasta 4 dígitos a la derecha del mismo.	8 bytes.
Autonumérico	Número secuencial (incrementado de uno a uno) único, o número aleatorio que Microsoft Access asigna cada vez que se agrega un nuevo registro a una tabla. Los campos Autonumérico no se pueden actualizar. Si desea más información, vea el tema de la propiedad Nuevos valores.	4 bytes (16 bytes si el valor de la propiedad Tamaño del campo es Id. la réplica).
Sí/No	Valores Sí y No, y campos que contengan uno de entre dos valores (Sí/No, Verdadero/Falso o Activado/desactivado).	1 bit.
Objeto OLE	Objeto (como por ejemplo una hoja de cálculo de Microsoft Excel, un documento de Microsoft Word, gráficos, sonidos u otros datos binarios) vinculado o incrustado en una tabla de Microsoft Access.	Hasta 1 gigabyte (limitado por el espacio disponible en disco)
Hipervínculo	Texto o combinación de texto y números almacenada como texto y utilizada como dirección de hipervínculo. Una dirección de hipervínculo puede tener hasta tres partes: textopresentación: el texto que aparece en el campo o control. dirección: ruta de acceso de un archivo (ruta UNC) o página (dirección URL). subdirección: posición dentro del archivo o página. La forma más sencilla de insertar una dirección de hipervínculo en un campo o control es hacer clic en el comando Hipervínculo del menú Insertar. Si desea más información, vea Escribir una dirección de hipervínculo en la vista Formulario o en la vista Hoja de datos.	Cada una de las tres partes del tipo de datos hipervínculo puede contener hasta 2048 caracteres.
Asistente para búsquedas	Crea un campo que permite elegir un valor de otra tabla o de una lista de valores mediante un cuadro de lista o un cuadro combinado. Al hacer clic en esta opción se inicia el Asistente para búsquedas, que crea un campo de búsqueda. Al salir del Asistente, Microsoft Access establece el tipo de datos basándose en los valores seleccionados en él.	Tamaño igual al del campo clave principal utilizado para realizar la búsqueda (habitualmente 4 bytes).
Esta propiedad sólo se puede establecer en la parte superior de la vista Diseño de la tabla.

En Visual Basic, puede usar la propiedad Type de DAO para establecer el tipo de datos de un campo antes de agregarlo a la colección Fields.

Comentarios

Los campos de tipo Memo, Hipervínculo y Objeto OLE no se pueden indizar.

Sugerencia   Utilice el tipo de datos Moneda en los campos que requieran muchos cálculos con datos de uno a cuatro decimales. Los campos de tipo Simple y Doble requieren cálculos en coma flotante, mientras que el tipo de datos Moneda emplea cálculos en coma fija, que son más rápidos.

Atención   Cambiar el tipo de datos de un campo después de haber introducido datos en una tabla puede provocar un largo proceso de conversión de datos al guardar la tabla. Si el tipo de datos de un campo está en conflicto con el valor de la propiedad Tipo de datos cambiada es posible que se pierdan algunos datos.

Establezca la propiedad Formato (Format) de modo que especifique un formato de presentación predefinido para los tipos de datos Número, Fecha/Hora, Moneda y Sí/No.

Para obtener más información sobre la forma de cambiar de tipo de datos de un campo, vea el Capítulo 4, "Trabajo con variables, constantes y tipos de datos ", de Creación de aplicaciones con Microsoft Access 97.


Propiedad LugaresDecimales (DecimalPlaces)

Puede usar la propiedad LugaresDecimales (DecimalPlaces) para especificar el número de lugares decimales que utiliza Microsoft Access para presentar números.

Valores

La propiedad LugaresDecimales (DecimalPlaces) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Auto	(Predeterminado) Los números aparecen en la forma especificada en la propiedad Formato (Format).	255
0 a 15	Los dígitos situados a la derecha del separador decimal aparecen con el número de lugares decimales especificado, y los situados a la izquierda del separador aparecen como especifique el valor de la propiedad Formato (Format).	0 a 15
Puede establecer esta propiedad para cuadros de texto y cuadros combinados en la hoja de propiedades del control, y para los campos de tablas en la hoja de propiedades de la tabla. También puede establecer la propiedad en la hoja de propiedades Propiedades del campo en la vista Diseño de consulta.

Sugerencia   Se recomienda establecer la propiedad LugaresDecimales (DecimalPlaces) en la hoja de propiedades de la tabla. Si después crea un control dependiente en un formulario o informe, heredará el valor de la propiedad LugaresDecimales (DecimalPlaces) establecido para el campo de la tabla o consulta base, con lo que no será necesario especificar la propiedad para cada control dependiente que cree.

En el caso de los controles, también puede establecer esta propiedad con una macro o con Visual Basic.

Nota   El valor de la propiedad LugaresDecimales (DecimalPlaces) no tiene ningún efecto si la propiedad Formato (Format) está en blanco o tiene el valor Número general.

Comentarios

La propiedad LugaresDecimales (DecimalPlaces) afecta sólo al número de lugares decimales que se muestran, y no al número de decimales que se almacena. Para cambiar la forma en que se almacena un número, es necesario modificar la propiedad Tamaño del campo en la vista Diseño de la tabla.

Puede usar la propiedad LugaresDecimales (DecimalPlaces) para mostrar números de forma distinta a la indicada por el valor de la propiedad Formato (Format), o distinta de la forma en que están almacenados. Por ejemplo, el valor Moneda en la propiedad Formato (Format) hace que se muestren sólo dos decimales (5,35). Para mostrar números de tipo Moneda con cuatro decimales (por ejemplo 5,3523), establezca el valor 4 en la propiedad LugaresDecimales (DecimalPlaces).


Propiedad Descripción

Puede usar la propiedad Descripción para proporcionar información sobre los objetos contenidos en la ventana Base de datos, y también sobre campos individuales de una tabla o consulta.

Valores

Para los objetos de base de datos, haga clic en el comando Propiedades del menú Ver y escriba el texto de la descripción en el cuadro Descripción. En el caso de tablas o consultas, también puede introducir la descripción en la hoja de propiedades de la tabla o consulta. La descripción del objeto aparece junto a su nombre en la ventana Base de datos cuando se hace clic en el comando Detalles del menú Ver.

Para campos individuales de una tabla o consulta, escriba la descripción en la parte superior de la vista Diseño de la tabla o en la hoja de propiedades Propiedades del campo en la ventana Consulta. La longitud máxima es 255 caracteres.

En Visual Basic, para establecer esta propiedad por primera vez es necesario crear una propiedad definida por la aplicación utilizando el método CreateProperty de DAO.

Comentarios

La descripción de un objeto aparece en la columna Descripción de la ventana Base de datos, que se muestra al mostrar los detalles.

Al crear controles arrastrando un campo desde la lista de campos, Microsoft Access copia la propiedad Descripción del campo en la propiedad TextoDeLaBarraDeEstado (StatusBarText) del control.

Nota   En el caso de una tabla vinculada, Microsoft Access muestra la información de conexión en la propiedad Descripción.


Propiedad Tamaño del campo

Puede usar la propiedad Tamaño del campo para establecer el tamaño máximo de los datos almacenados en un campo de tipo Texto, Numérico o Autonumérico.

Valores

Si la propiedad Tipo de datos tiene el valor Texto, escriba un número entre 0 y 255. El valor predeterminado es 50.

Si la propiedad Tipo de datos tiene el valor Autonumérico, en Tamaño del campo se puede establecer Entero largo o Id. de réplica.

Si la propiedad Tipo de datos tiene establecido Numérico, las opciones de Tamaño del campo y sus valores se relacionan de la siguiente forma:

Valor	Descripción	Precisión decimal	Tamaño de almacenamiento
Byte	Almacena números entre 0 y 255 (no admite fracciones).	Ninguna	1 byte
Entero	Almacena números entre –32.768 y 32.767 (no admite fracciones).	Ninguna	2 bytes
Entero largo	(Predeterminado) Almacena números entre –2.147.483.648 y 2.147.483.647 (no admite fracciones).	Ninguna	4 bytes
Simple	Almacena números entre  –3,402823E38 y –1,401298E–45 para valores negativos, y entre  1,401298E–45 y 3,402823E38 para valores positivos.	7	4 bytes
Doble	Almacena números entre  –1,79769313486231E308 y –4,94065645841247E–324 para valores negativos, y entre 1,79769313486231E308 y 4,94065645841247E–324 para valores positivos.	15	8 bytes
Id. de réplica	Identificador global único (GUID)	N/D	16 bytes
Sólo es posible establecer esta propiedad en la hoja de propiedades de la tabla.

Para establecer el tamaño de un campo en Visual Basic, utilice la propiedad Size de DAO para leer y establecer el tamaño máximo de los campos de tipo Texto (para los tipos distintos de Texto, el valor de la propiedad Type de DAO determina automáticamente el de la propiedad Size).

Nota   Puede especificar los tamaños de campo predeterminados para los tipos Texto y Numérico modificando los valores de Tamaño predeterminado de campo en la ficha Tablas/Consultas, que aparece al hacer clic en el comando Opciones del menú Herramientas.

Comentarios

Se recomienda especificar el valor más pequeño posible para la propiedad Tamaño del campo, pues los tamaños más pequeños pueden procesarse más rápidamente y requieren menos memoria.

Atención   Si cambia un valor de Tamaño del campo por otro más pequeño para un campo que ya contiene datos, es posible que pierda información. Por ejemplo, si un campo de tipo Texto tiene el valor 255 en Tamaño del campo y lo cambia por 50, los datos que se extiendan más allá de los 50 primeros caracteres se perderán.

Si los datos de un campo de tipo Numérico no caben con un nuevo valor de Tamaño del campo, los números fraccionarios se pueden redondear, o pueden dar el valor Nulo. Por ejemplo, si cambia el tamaño de campo de Simple a Entero, los valores fraccionarios se redondearán al número entero más cercano, y los superiores a 32.767 o inferiores a –32.768 serán reemplazados por valores nulos.

No es posible deshacer los cambios en los datos provocados por una modificación de la propiedad Tamaño del campo después de haberlos guardado en la vista Diseño de la tabla.

Sugerencia   Puede usar el tipo de datos Moneda cuando vaya a realizar muchos cálculos con un campo que contenga números que tengan entre uno y cuatro decimales. Los campos de tipo Simple y Doble requieren cálculos en coma flotante, mientras que los de tipo Moneda realizan los cálculos en coma fija, que es más rápido.


Propiedad Ignorar Nulos (IgnoreNulls)

Puede usar la propiedad Ignorar Nulos (IgnoreNulls) para especificar que los registros con valor Nulo en los campos indexados no se incluyan en el índice.

Valores

La propiedad Ignorar Nulos (IgnoreNulls) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	Los registros que contienen valores Nulo en los campos indexados no se incluyen en el índice.	True (–1)
No	(Predeterminado) Los registros que contienen valores Nulo en los campos indexados se incluyen en el índice.	False (0)
Puede establecer esta propiedad utilizando la ventana Índices de la vista Diseño de la tabla o Visual Basic.

Para tener acceso a la propiedad Ignorar Nulos (IgnoreNulls) de un índice con Visual Basic, utilice la propiedad IgnoreNulls de DAO.

Comentarios

Puede definir un índice para un campo con el fin de facilitar búsquedas más rápidas cuando los registros están indexados por ese campo. Si permite entradas nulas en el campo indexado, y espera que haya muchas, puede establecer Sí en la propiedad Ignorar Nulos (IgnoreNulls) para reducir el espacio de almacenamiento del índice.


Propiedad Indexado

Puede usar la propiedad Indexado para establecer un índice de un solo campo. Los índices hacen que las consultas basadas en los campos indexados sean más rápidas, y también aceleran las operaciones de ordenación y agrupación. Por ejemplo, si busca empleados basándose en un campo llamado Apellidos, puede crear un índice para este campo para hacer más rápida la búsqueda.

Valores

La propiedad Indexado puede tener los valores siguientes:

Valor	Descripción
No	(Predeterminado) Sin índice.
Sí (Con duplicados)	El índice admite valores duplicados.
Sí (Sin duplicados)	El índice no admite valores duplicados.
Sólo puede establecer esta propiedad en la sección Propiedades del campo de la vista Diseño de la tabla. Puede establecer un índice de un solo campo estableciendo la propiedad Indexado en la sección Propiedades del campo de la vista Diseño de tabla. Para establecer índices formados por varios campos, abra la ventana Índices haciendo clic en el comando Índices del menú Ver.

Si agrega un índice de un solo campo en la ventana Índices, Microsoft Access establecerá Sí en la propiedad Indexado de ese campo.

En Visual Basic, utilice el método CreateIndex de DAO para crear un índice de un solo campo.

Comentarios

Puede usar la propiedad Indexado para buscar y ordenar registros con un solo campo de una tabla. Este campo puede contener valores únicos o no. Por ejemplo, puede crear un índice con un campo llamado IdEmpleado para una tabla Empleados en la que cada identificador de empleado sea único, o también un índice con el campo Nombre, en el que algunos nombres pueden estar duplicados.

Nota   No es posible crear índices con los campos de tipo Memo, Hipervínculo u Objeto OLE.

Puede crear tantos índices como precise. Los índices se crean al guardar la tabla, y se actualizan automáticamente al modificar o agregar registros. En cualquier momento puede agregar o eliminar índices en la vista Diseño de la tabla.

Sugerencia   Puede especificar texto utilizado habitualmente al comienzo o al final de un nombre de campo (como "Id", "código" o "núm") en la opción Autoindexar al importar ocrear de la ficha Tablas/Consultas, que aparece al hacer clic en el comando Opciones del menú Herramientas. Al importar archivos de datos que contengan ese texto en el nombre de sus campos, Microsoft Access creará un índice los mismos.

Si la clave principal de una tabla es un solo campo, Microsoft Access establecerá automáticamente la propiedad Indexado de ese campo a Sí (Sin duplicados).

Si desea crear índices con múltiples campos, utilice la ventana Índices.


Propiedad Principal (Primary)

Puede usar la propiedad Principal (Primary) para especificar el campo clave principal de una tabla. El campo clave principal contiene datos que identifican de forma unívoca cada registro de una tabla.

Valores

La propiedad Principal (Primary) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	El índice seleccionado es la clave principal.	True (–1)
No	El índice seleccionado no es la clave principal.	False (0)
Puede establecer la propiedad Principal (Primary) de tres formas:

•	En la vista Diseño de la tabla, seleccione el campo o campos en el orden que desee para la clave principal, y luego haga clic en Clave principal  [image]  en la barra de herramientas.

•	En la ventana Índices, seleccione o introduzca el nombre de un índice en la columna Nombre del índice y establezca la propiedad Principal (Primary) a Sí en la sección Propiedades del índice.

•	En Visual Basic, para tener acceso a la propiedad Principal (Primary) de un índice, use la propiedad Primary de DAO.

Comentarios

Microsoft Access crea automáticamente un índice con el campo clave principal de una tabla, y lo utiliza para buscar registros y crear combinaciones entre tablas. El índice clave principal requiere que haya una entrada en el campo clave principal, y no admite valores duplicados. El orden de los campos en una clave principal de múltiples campos determina el orden predeterminado de la tabla.

Si no hay clave principal al guardar el diseño de una tabla, Microsoft Access presentará un cuadro de diálogo preguntando si desea crear una. Si elige Sí, se agregará un campo de tipo Autonumérico a la tabla (con el valor Incrementalmente en la propiedad Nuevos valores), y se establecerá dicho campo como clave principal. Si elige No, no se creará ninguna clave principal.

Las tablas sin clave principal no pueden utilizarse para una relación, y en ellas las búsquedas y ordenaciones pueden ser más lentas.


Propiedad Requerido (Required)

Puede usar la propiedad Requerido (Required) para especificar si es necesario que exista un valor en un campo. Si el valor de esta propiedad es Sí, al introducir datos en un registro deberá especificar un valor en el campo en cualquier control dependiente del mismo, y además el valor no podrá ser Nulo. Por ejemplo, es posible que desee asegurarse de que el control Apellidos tenga siempre un valor en todos los registros. Cuando desee permitir el valor Nulo en un campo, no sólo deberá establecer No para la propiedad Requerido (Required), sino que, si la propiedad ReglaDeValidación (ValidationRule) tiene algún valor deberá contener explícitamente "regla_de_validación O Es Nulo".

Nota   La propiedad Requerido (Required) no se aplica a los campos de tipo Autonumérico.

Valores

La propiedad Requerido (Required) puede tener los valores siguientes:

Valor	Descripción	Visual Basic
Sí	El campo requiere un valor.	True (–1)
No	(Predeterminado) El campo no requiere un valor.	False (0)
Puede establecer esta propiedad para todos los campos de una tabla (excepto para los de tipo Autonumérico) en la hoja de propiedades de la tabla o Visual Basic.

Nota   Para tener acceso a la propiedad Requerido (Required) de un campo en Visual Basic, utilice la propiedad Required de DAO.

Comentarios

El motor de base de datos Microsoft Jet  hace que se cumple la propiedad Requerido (Required) a nivel de tabla.Si establece Sí en esta propiedad, el campo deberá recibir un valor o contenerlo ya cuando tenga el enfoque, cuando un usuario introduzca datos en una tabla (o en un formulario u hoja de datos basado en ella), cuando una macro o Visual Basic establezcan el valor del campo o cuando se importen datos a la tabla.

Puede usar las propiedades Requerido (Required) y Permitir longitud cero (AllowZeroLength) para distinguir entre la inexistencia de información (indicada por una cadena de longitud cero (" ") almacenada en el campo) y la información que puede existir, pero que se desconoce (almacenada como un valor Nulo en el campo). Si establece Sí en la propiedad Permitir longitud cero (AllowZeroLength), una cadena de longitud cero será una entrada válida en el campo, independientemente del valor de la propiedad Requerido (Required). Si establece Sí en Requerido (Required) y No en Permitir longitud cero (AllowZeroLength), deberá introducir un valor en el campo, y no será válida una cadena de longitud cero.

Sugerencia   Puede utilizar una máscara de entrada al introducir datos en un campo para distinguir entre un valor Nulo y la de una cadena de longitud cero. Por ejemplo, puede mostrarse la cadena "Ninguno" cuando se introduce una cadena de longitud cero.

En la tabla siguiente se indica el resultado de las combinaciones de los valores de las propiedades Permitir longitud cero (AllowZeroLength) y Requerido (Required).

Requerido (Required)	Permitir longitud cero (AllowZeroLength)	Acción del usuario	Valor almacenado
No	No	Presionar ENTRAR Presionar ESPACIO Introducir una cadena de longitud cero	Nulo Nulo (no permitido)
No	Sí	Presionar ENTRAR Presionar ESPACIO Introducir una cadena de longitud cero	Nulo Nulo Cadena de longitud cero
Sí	No	Presionar ENTRAR Presionar ESPACIO Introducir una cadena de longitud cero	(no permitido) (no permitido) (no permitido)
Sí	Sí	Presionar ENTRAR Presionar ESPACIO Introducir una cadena de longitud cero	(no permitido) Cadena de longitud cero Cadena de longitud cero
Si establece Sí en la propiedad Requerido (Required) de un campo de una tabla que ya contiene datos, Microsoft Access le dará la opción de comprobar o no si el campo tiene un valor en todos los registros existentes. Sin embargo, puede obligar a que se especifique un valor para el campo en todos los registros nuevos incluso cuando existan registros con el valor Nulo en él.

Nota   Para forzar una relación entre tablas que no admitan valores Nulo, establezca Sí en la propiedad Requerido (Required).del campo clave externa de la tabla relacionada. El motor de base de datos Jet asegurará entonces que haya un registro relacionado en la tabla principal antes de poder crear un registro en la tabla secundaria. Si el campo clave externa forma parte de la clave principal de la tabla secundaria, esto no es necesario, ya que una clave principal no puede contener el valor Nulo.


Propiedad Nombre del campo

Puede utilizar la propiedad Nombre del campo para especificar el nombre de un campo dentro de una tabla. Por ejemplo, puede especificar "Apellidos" en un campo que almacene los apellidos de los empleados dentro de la tabla Empleados.

Valores

Escriba un nombre de campo, siguiendo las reglas para nombres de objetos de Microsoft Access. El nombre no puede duplicar ningún otro nombre de campo de la tabla.

Nota   Evite especificar un nombre de campo que entre en conflicto con los nombres de funciones o propiedades incorporadas en Microsoft Access, como la propiedad Nombre (Name).

Puede establecer esta propiedad en la parte superior de la vista Diseño de la tabla o utilizando Visual Basic.

En Visual Basic, utilice la propiedad Name de DAO para leer y establecer un nombre de campo de una tabla.

Comentarios

Microsoft Access identifica un campo por su nombre de campo. Una vez que se especifica un nombre de campo en la vista Diseño de la tabla, se puede utilizar ese nombre en expresiones, procedimientos de Visual Basic e instrucciones SQL.


Propiedad Única (Unique)

Puede utilizar la propiedad Única (Unique) para especificar que un índice refuerce la unicidad de los datos del índice clave de la tabla.

Valores

La propiedad Única (Unique)utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	El índice es un índice clave (único).	Verdadero (True) (-1)
No	El índice no es un índice clave.	Falso (False) (0)
Puede establecer esta propiedad en la ventana Índices de la vista Diseño de la tabla o usando Visual Basic.

Nota   Para tener acceso a la propiedad Única (Unique) de un índice usando Visual Basic, utilice la propiedad Unique de DAO.

Comentarios

Un índice clave optimiza la búsqueda de registros. Se compone de uno o más campos que organizan de forma única todos los registros de una tabla en un orden predefinido. Si el índice se compone de un campo, los valores de ese campo deben ser únicos. Si comprende más de un campo, pueden darse valores duplicados en cada campo, pero cada combinación de valores de todos los campos que componen el índice debe ser única. Los índices que no son clave tienen campos cuyos valores no son necesariamente únicos.

Un índice es el índice primario de una tabla si su propiedad Principal (Primary) es Sí. Cada tabla puede tener solamente un índice principal.


Propiedad Mostrar control

Puede utilizar la propiedad Mostrar control en la vista Diseño de la tabla para especificar el control predeterminado que desee emplear para mostrar un campo.

Valores

Puede establecer la propiedad Mostrar control en la hoja de propiedades de la tabla, en la vista Diseño de la tabla, haciendo clic en la ficha Búsqueda de la sección Propiedades del campo.

Esta propiedad contiene una lista desplegable con los controles disponibles para el campo seleccionado. En el caso de campos de tipo Texto o Número, en esta propiedad se puede establecer Cuadro de texto, Cuadro de lista o Cuadro combinado. Para los campos de tipo Sí/No, en la propiedad puede establecerse Casilla de verificación, Cuadro de texto o Cuadro combinado.

Comentarios

Al seleccionar un control para esta propiedad, aparecen en la ficha Búsqueda las propiedades adicionales necesarias para configurarlo.

Sugerencia   Puede hacer que Microsoft Access establezca la propiedad Mostrar control y las relacionadas con ella seleccionando Asistente para búsquedas como el tipo de datos para el campo.

La configuración de esta propiedad y de las del control relacionado afectará a la forma en que aparece el campo en la vista Hoja de datos y en la vista Formulario. El campo se muestra a través del control, y con las propiedades del control establecidas en la vista Diseño de la tabla. Si un campo tiene establecida su propiedad Mostrar control en la vista Diseño de la tabla y lo arrastra desde la lista de campos en la vista Diseño del formulario, Microsoft Access copiará las propiedades correspondientes en la hoja de propiedades del control.


Propiedad EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)

Puede utilizar la propiedad EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect) para especificar si se aplican efectos especiales a las celdas de una hoja de datos.

Nota   La propiedad EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect) sólo se aplica a los objetos en la vista Hoja de datos.

Valores

La propiedad EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect) puede tener los valores siguientes:

Valor	Descripción	Visual Basic	Valor en Visual Basic
Sin relieve	(Predeterminado) No se aplican efectos especiales a las celdas de la hoja de datos.	acEffectNormal	0
En relieve	Las celdas de la hoja de datos aparecen en relieve.	acEffectRaised	1
Bajo relieve	Las celdas de la hoja de datos aparecen hundidas.	acEffectSunken	2
Puede establecer esta propiedad con el botón Efecto especial de la barra de herramientas Formato (Hoja de datos), utilizando una macro, o usando Visual Basic.

También puede establecer la propiedad seleccionando el tipo de efecto de celda en Efecto de celda, en el cuadro de diálogo Efectos de celdas, que aparece al hacer clic en el comando Celdas del menú Formato.

Puede establecer la propiedad EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect) predeterminada mediante la configuración de Efecto de celda predeterminado, en la ficha Hoja de datos del cuadro de diálogo Opciones, que aparece al hacer clic en el comando Opciones del menú Herramientas.

Comentarios

Esta propiedad aplica el efecto seleccionado a toda la hoja de datos.

Cuando en esta propiedad se establece a los valores En relieve o Bajo relieve, las líneas de cuadrícula serán visibles en la hoja de datos independientemente del valor de la propiedad ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior).

La tabla siguiente contiene las propiedades que no se encuentran en la colección Properties de los objetos TableDef o QueryDef hasta que se agregan con el método CreateProperty o se establecen usando la barra de herramientas Formato (Hoja de datos).

FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic)*	DatasheetForeColor*
AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)*	DatasheetBackColor
DatasheetFontName*	ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor)
FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)*	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)
EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)*	EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)
Nota   Al agregar o establecer una de las propiedades que aparecen con un asterisco, Microsoft Access agregará automáticamente a la colección Properties todas las propiedades que aparecen con asterisco.


Propiedad ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor)

Puede utilizar la propiedad ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor) para especificar el color de las líneas de la cuadrícula en una hoja de datos.

Nota   La propiedad ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor) sólo se aplica a los objetos en la vista Hoja de datos.

Valores

El valor de la propiedad ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor) es de tipo Entero largo. En Visual Basic, también puede utilizar las funciones RGB o QBColor para establecer esta propiedad.

Puede establecer ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor) con la herramienta Color de la cuadrícula  [image],  de la barra de herramientas, Formato (Hoja de datos), mediante una macro, o con Visual Basic.

También puede establecer esta propiedad haciendo clic en el comando Celdas del menú Formato y abriendo el cuadro de diálogo Efectos de celdas. El él puede seleccionar uno de los colores disponibles en la lista desplegable Color de la cuadrícula.

Puede establecer la propiedad ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor) predeterminada configurando las opciones de Colores predeterminados en la ficha Hoja de datos del cuadro de diálogo Opciones, que aparece al hacer clic en el comando Opciones del menú Herramientas.

Comentarios

El valor de esta propiedad afecta al color de la cuadrícula de toda la hoja de datos. No es posible establecer el color de celdas individuales en la vista Hoja de datos.

La tabla siguiente indica las propiedades que no se encuentran en la colección Properties de los objetos TableDef o QueryDef hasta que se agregan con el método CreateProperty o se establecen con la barra de herramientas Formato (Hoja de datos).

FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic)*	DatasheetForeColor*
AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)*	DatasheetBackColor
DatasheetFontName*	ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor)
FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)*	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)
EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)*	EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)
Nota   Al agregar o establecer una de las propiedades que aparecen con un asterisco, Microsoft Access agregará automáticamente a la colección Properties todas las propiedades que aparecen con asterisco.


Propiedad ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)

Puede utilizar la propiedad ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior) para especificar las líneas de cuadrícula que deben aparecer en la vista Hoja de datos.

Nota   Esta propiedad sólo se aplica a los objetos en la vista Hoja de datos.

Valores

La propiedad ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior) puede tener los valores siguientes:

Valor	Descripción	Visual Basic	Valor en Visual Basic
Ninguna	No se muestran las líneas de la cuadrícula.	acGridLinesNone	0
Horizontal	Sólo se muestran las líneas horizontales de la cuadrícula.	acGridLinesHoriz	1
Vertical	Sólo se muestran las líneas verticales de la cuadrícula.	acGridLinesVert	2
Ambas	(Predeterminado) Se muestran las líneas horizontales y verticales de la cuadrícula.	acGridLinesBoth	3
Puede establecer esta propiedad con el botón Líneas de la cuadrícula de la barra de herramientas Formato (Hoja de datos), mediante una macro, o con Visual Basic.

También puede establecer esta propiedad seleccionado las opciones que aparecen en Mostrar cuadrícula en el cuadro de diálogo Efectos de celdas, que aparece al hacer clic en el comando Celdas del menú Formato.

Puede establecer la propiedad predeterminada ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior) configurando las opciones de Mostrar cuadrícula predeterminada de la ficha Hoja de datos del cuadro de diálogo Opciones, que aparece al hacer clic en el comando Opciones del menú Herramientas.

Comentarios

Los cambios en esta propiedad sólo serán visibles si la propiedad EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect) tiene el valor Sin relieve.

La tabla siguiente indica las propiedades que no se encuentran en la colección Properties de los objetos TableDef o QueryDef hasta que se agregan con el método CreateProperty o se las establece con la barra de herramientas Formato (Hoja de datos).

FuenteDeHojaDeDatosEnCursiva (DatasheetFontItalic)*	DatasheetForeColor*
AlturaDeFuenteDeHojaDeDatos (DatasheetFontHeight)*	DatasheetBackColor
DatasheetFontName*	ColorDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesColor)
FuenteDeHojaDeDatosSubrayada (DatasheetFontUnderline)*	ComportamientoDeLaCuadrículaDeHojaDeDatos (DatasheetGridlinesBehavior)
EspesorDeFuenteDeHojaDeDatos (DatasheetFontWeight)*	EfectoDeCeldasDeHojaDeDatos (DatasheetCellsEffect)
Nota   Al agregar o establecer una de las propiedades que aparecen con un asterisco, Microsoft Access agregará automáticamente a la colección Properties todas las propiedades que aparecen con asterisco.


Propiedad Nuevos valores

Puede utilizar la propiedad Nuevos valores para especificar la forma en que se incrementan los campos de tipo Autonumérico al agregar nuevos registros a una tabla.

Nota   La propiedad Nuevos valores sólo se aplica a los campos de tipo Autonumérico.

Valores

La propiedad Nuevos valores puede tener los valores siguientes:

Valor	Descripción
Incrementalmente	(Predeterminado) Los valores de los campos de tipo Autonumérico se incrementan en 1 para los nuevos registros.
Aleatoriamente	Se asigna a los campos de tipo Autonumérico de los registros nuevos un valor aleatorio de tipo Entero largo.
Puede establecer esta propiedad en la hoja de propiedades de la tabla en la vista Diseño de la tabla, haciendo clic en la ficha General de la sección Propiedades del campo.

Comentarios

Al replicar una base de datos, se establece el valor Aleatoriamente para los campos de tipo Autonumérico, con el fin de asegurar que los registros nuevos introducidos en las distintas réplicas contengan valores únicos.


Propiedades Agregar dos puntos y Etiquetado automático

•	La propiedad Agregar dos puntos especifica si un signo de dos puntos sigue al texto en las etiquetas de los nuevos controles.

•	La propiedad Etiquetado automático especifica si las etiquetas se crean automáticamente y se anexan a los controles nuevos.

Valores

La propiedad Agregar dos puntos puede tener los valores siguientes.

Valor	Descripción
Sí	Un signo de dos puntos sigue al texto de las etiquetas de los nuevos controles.
No	Un signo de dos puntos no sigue al texto de las etiquetas de los nuevos controles.
La propiedad Etiquetado automático puede tener los valores siguientes.

Valor	Descripción
Sí	Se anexa una etiqueta a los controles nuevos.
No	No se anexa una etiqueta a los controles nuevos.
Puede establecer estas propiedades solamente mediante el estilo de control predeterminado de un control o el método DefaultControl de Visual Basic.

Comentarios

Los cambios realizados al estilo de control predeterminado afectan sólo a los controles creados en el formulario o el informe actual. Para cambiar el estilo de control predeterminado de todos los formularios o informes nuevos creados sin utilizar un asistente de Microsoft Access, vea Especificar una plantilla nueva para formularios e informes.


Propiedades FuenteEnCursiva (FontItalic) y FuenteSubrayada (FontUnderline)

Puede utilizar las propiedades FuenteEnCursiva (FontItalic) y FuenteSubrayada (FontUnderline) para especificar si el texto aparece en cursiva o subrayado respectivamente en las siguientes situaciones:

•	Al mostrar o imprimir controles en formularios e informes.

•	Al utilizar el método Print en un informe.

Valores

La propiedad FuenteEnCursiva (FontItalic) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	El texto está en cursiva.	True (–1)
No	(Predeterminado) El texto no está en cursiva.	False (0)
La propiedad FuenteSubrayada (FontUnderline) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
Sí	El texto está subrayado.	True
No	(Predeterminado) El texto no está subrayado.	False
Para los controles de los formularios e informes, puede establecer estas propiedades mediante la hoja de propiedades del control, una macro o Visual Basic.

Para los informes, puede utilizar estas propiedades sólo en un procedimiento de evento o en una macro especificada por el valor de la propiedad del evento OnPrint.

También puede establecer estas propiedades haciendo clic en Cursiva  [image]  y en Subrayado  [image]  en la barra de herramientas Formato (Formulario/Informe).

Es posible establecer los valores predeterminados de estas propiedades mediante el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Comentarios

Para un cuadro de texto, un cuadro combinado, una etiqueta o un botón de comando que contiene un hipervínculo, Microsoft Access establece automáticamente la propiedad FuenteSubrayada (FontUnderline) a Sí si la casilla de verificación Subrayar hipervínculos está activada en la ficha Hipervínculos/HTML del cuadro de diálogo Opciones, disponible al hacer clic en Opciones en el menú Herramientas. Si quita el hipervínculo del control (por ejemplo, cambiando la propiedad OrigenDelControl (ControlSource) de un cuadro de texto dependiente a un origen que no es un campo Hipervínculo), Microsoft Access establece de nuevo la propiedad FuenteSubrayada (FontUnderline) al estilo de control predeterminado. Para los botones de comando, el valor de la propiedad FuenteSubrayada (FontUnderline) se aplica sólo si el botón de comando contiene un título en lugar de una imagen.


Propiedades NombreDeFuente (FontName) y TamañoDeFuente (FontSize)

Puede utilizar las propiedades NombreDeFuente (FontName) y TamañoDeFuente (FontSize) para especificar la fuente y el tamaño en puntos respectivamente para el texto en las siguientes situaciones:

•	Al mostrar o imprimir controles en formularios e informes.

•	Al utilizar el método Print en un informe.

Valores

El valor de la propiedad NombreDeFuente (FontName) es el nombre de la fuente en la que se muestra el texto.

La propiedad TamañoDeFuente (FontSize) puede tener los valores siguientes.

Valor	Descripción
8	(Valor predeterminado para todos los informes y controles excepto los botones de comando) El texto es un tipo de 8 puntos.
10	(Valor predeterminado para los botones de comando) El texto es un tipo de 10 puntos.
Otros tamaños	El texto tiene el tamaño indicado.
Para los controles de formularios e informes, puede establecer estas propiedades mediante la hoja de propiedades, una macro o Visual Basic.

También puede establecer estas propiedades haciendo clic en el cuadro Fuente  [image]  y en el cuadro Tamaño de fuente  [image]  de la barra de herramientas Formato (Formulario/Informe).

Es posible establecer el valor predeterminado de estas propiedades mediante el estilo de control predeterminado del control o el método DefaultControl de Visual Basic.

Para los informes, puede establecer estas propiedades sólo en un procedimiento de evento o en una macro especificada por la propiedad del evento OnPrint.

En Visual Basic, establezca la propiedad NombreDeFuente (FontName) mediante una expresión de cadena que sea el nombre de la fuente deseada y estableza la propiedad TamañoDeFuente (FontSize) mediante una expresión numérica igual al tamaño de la fuente deseado. El valor de la propiedad TamañoDeFuente (FontSize) puede estar entre 1 y 127, inclusive.

Comentarios

La disponibilidad de las fuentes depende del sistema y de la impresora. Si selecciona una fuente que el sistema no puede mostrar o que no está instalada, Windows la sustituye por una fuente similar.


Propiedad EspesorDeFuente (FontWeight)

La propiedad EspesorDeFuente (FontWeight) permite especificar el grosor de línea que utiliza Windows para mostrar e imprimir los caracteres de un control.

Valores

La propiedad EspesorDeFuente (FontWeight) puede tener los valores siguientes.

Valor	Visual Basic
Delgado	100
Extra-fino	200
Fino	300
Normal	400
Mediano	500
Semi-negrita	600
Negrita	700
Extra-negrita	800
Grueso	900
Puede establecer esta propiedad mediante la hoja de propiedades del control, una macro o Visual Basic. También puede hacer clic en Negrita  [image]  en la barra de herramientas Formato (Formulario/Informe). De esta forma se establece la propiedad EspesorDeFuente (FontWeight) a Negrita (700).

Puede establecer el valor predeterminado de esta propiedad mediante el estilo de control predeterminado de un control o el método DefaultControl de Visual Basic.

Comentarios

La apariencia de una fuente en pantalla y en la impresión puede diferir, dependiendo del equipo y la impresora. Por ejemplo, un valor Delgado para la propiedad EspesorDeFuente (FontWeight) puede tener la misma apariencia en pantalla que el valor Normal, pero aparecer más claro al imprimirlo.

La propiedad FontBold, que está disponible sólo en Visual Basic y en las macros, también puede utilizarse para establecer el grosor de línea del texto de un control o un informe a negrita. La propiedad FontBold proporciona una forma rápida de hacer que el texto esté en negrita; la propiedad EspesorDeFuente (FontWeight) proporciona más control sobre el grosor de línea del texto. La tabla siguiente muestra la relación entre los valores de estas propiedades.

Si	Entonces
FontBold = False (0)	EspesorDeFuente (FontWeight) = Normal (400)
FontBold = True (–1)	EspesorDeFuente (FontWeight) = Negrita (700)
EspesorDeFuente (FontWeight) < 700	FontBold = False
EspesorDeFuente (FontWeight) > = 700	FontBold = True


Propiedades Alinear etiquetas y AlineaciónDelTexto (TextAlign)

•	La propiedad Alinear etiquetas especifica la alineación del texto dentro de las etiquetas anexadas a controles nuevos.

•	La propiedad AlineaciónDelTexto (TextAlign) especifica la alineación del texto en nuevos controles.

Valores

La propiedad Alinear etiquetas puede tener los valores siguientes.

Valor	Descripción
General	(Predeterminado) El texto de la etiqueta se alinea a la izquierda.
Izquierda	El texto de la etiqueta se alinea a la izquierda.
Centro	El texto de la etiqueta se centra.
Derecha	El texto de la etiqueta se alinea a la derecha.
Puede establecer la propiedad Alinear etiquetas mediante el estilo de control predeterminado de un control o el método DefaultControl de Visual Basic.

La propiedad AlineaciónDelTexto (TextAlign) puede tener los valores siguientes.

Valor	Descripción	Visual Basic
General	(Predeterminado) El texto se alinea a la izquierda; los números y las fechas se alinean a la derecha.	0
Izquierda	El texto, los números y las fechas se alinean a la izquierda.	1
Centro	El texto, los números y las fechas se centran.	2
Derecha	El texto, los números y las fechas se alinean a la derecha.	3
Puede establecer la propiedad AlineaciónDelTexto (TextAlign) mediante la hoja de propiedades del control, una macro o Visual Basic.

También puede establecer la propiedad AlineaciónDelTexto (TextAlign) haciendo clic en Alinear a la izquierda  [image], Centrar  [image] y Alinear a la derecha  [image]  en la barra de herramientas Formato (Formulario/Informe).

Puede establecer el valor predeterminado de la propiedad AlineaciónDelTexto (TextAlign) mediante el estilo de control predeterminado del control o el método DefaultControl de Visual Basic.

Comentarios

Cuando se crean, los controles tienen una etiqueta anexada (siempre y cuando su propiedad Etiquetado automático esté establecida a Sí). Los cambios en el estilo de control predeterminado Alinear etiquetas afectan sólo a los controles creados en el formulario o el informe actual. Para cambiar el estilo de control predeterminado de todos los nuevos formularios o informes creados sin utilizar un asistente de Microsoft Access, vea Especificar una nueva plantilla para formularios e informes .


Propiedades Alinear etiquetas y AlineaciónDelTexto (TextAlign) - Se aplica a
Propiedades Alinear etiquetas y AlineaciónDelTexto (TextAlign) — Se aplica a

Propiedad Alinear etiquetas

Propiedad AlineaciónDelTexto (TextAlign)


Propiedad FontBold

Puede utilizar la propiedad FontBold para especificar si una fuente aparece en estilo negrita en las siguientes situaciones:

•	Al mostrar o imprimir controles de formularios e informes.

•	Al utilizar el método Print en un informe.

Valores

La propiedad FontBold puede tener los valores siguientes.

Valor	Descripción
True (–1)	El texto está en negrita.
False (0)	(Predeterminado) El texto no está en negrita.
Puede establecer la propiedad FontBold sólo mediante una macro o Visual Basic.

Comentarios

Para utilizar la propiedad FontBold en un informe, cree primero un procedimiento de evento Print que imprima el texto deseado.

La apariencia de la fuente en pantalla y en la impresión puede ser distinta, dependiendo del equipo y de la impresora.

La propiedad EspesorDeFuente (FontWeight), que está disponible en la hoja de propiedades de los controles, también puede utilizarse para establecer el grosor de línea del texto de un control. La propiedad FontBold ofrece una forma rápida de hacer que el texto aparezca en negrita; la propiedad EspesorDeFuente (FontWeight) proporciona un mayor control sobre el valor de grosor de línea del texto. La tabla siguiente muestra la relación entre los valores de estas propiedades.

Si	Entonces
FontBold = False	EspesorDeFuente (FontWeight) = Normal (400)
FontBold = True	EspesorDeFuente (FontWeight) = Bold (700)
EspesorDeFuente (FontWeight) < 700	FontBold = False
EspesorDeFuente (FontWeight) > = 700	FontBold = True


Ejemplo de la propiedad FontBold

El procedimiento de evento Print siguiente imprime el título de un informe y la fecha actual en un estilo negrita en un informe en las coordenadas especificadas por los valores de las propiedades PosiciónX (CurrentX) y PosiciónY (CurrentY).

Private Sub EncabezadoInforme0_Print(Cancel As Integer, PrintCount As Integer)

Dim MiFecha

MiFecha = Date

Me.FontBold = True

Me.Print("Informe de administración comercial")	' Imprimir el título del informe en negrita.

Me.Print(MiFecha)

End Sub


Propiedad CountOfLines

La propiedad CountOfLines devuelve un valor Largo que indica el número de líneas de código de un módulo estándar o un módulo de clase.

Valores

La propiedad CountOfLines está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

Las líneas de un módulo se numeran desde 1.

La número de línea de la última línea de un módulo es el valor de la propiedad CountOfLines.


Ejemplo de las propiedades CountOfLines y CountOfDeclarationLines

El ejemplo siguiente cuenta el número de líneas y de líneas de declaración de cada módulo estándar de la colección Modules. Tenga en cuenta que la colección Modules contiene sólo módulos que están abiertos en el editor de módulos.

Function TotalLíneaMódulo(cadNombreMódulo As String)

Dim mdl As Module

' Abrir el módulo para incluirlo en la colección Modules.

DoCmd.OpenModule cadNombreMódulo

' Devolver referencia al objeto Module.

Set mdl = Modules(cadNombreMódulo)

' Mostrar el número de líneas del módulo.

Debug.Print "Número de líneas: ", mdl.CountOfLines

' Mostrar el número de líneas de declaración.

Debug.Print "Número de líneas de declaración: ", _

mdl.CountOfDeclarationLines

End Function


Propiedad CountOfDeclarationLines

La propiedad CountOfDeclarationLines devuelve un valor Largo que indica el número de líneas de código de la sección Declaraciones de un módulo estándar o un módulo de clase.

Valores

La propiedad CountOfDeclarationLines está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

Las líneas de un módulo se numeran desde 1.

El valor de la propiedad CountOfDeclarationLines es igual al número de línea de la última línea de la sección Declaraciones. Puede utilizar esta propiedad para determinar dónde termina la sección Declaraciones y dónde empieza el cuerpo del módulo.


Propiedad GUID

La propiedad GUID de un objeto Reference devuelve un GUID que identifica una biblioteca de tipos en el Registro de Windows.

Valores

La propiedad GUID está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

Cada biblioteca de tipos tiene un GUID asociado que se almacena en el Registro. Al establecer una referencia a una biblioteca de tipos, Microsoft Access utiliza el GUID de la biblioteca de tipos para identificarla.

Puede utilizar el método AddFromGUID para crear un objeto Reference a partir del GUID de una biblioteca de tipos.


Propiedad IsBroken

La propiedad IsBroken devuelve un valor Boolean que indica si un objeto Reference apunta a una referencia válida en el Registro de Windows.

Valores

La propiedad IsBroken está disponible sólo mediante Visual Basic y es de sólo lectura.

El valor predeterminado de la propiedad IsBroken es False (0). La propiedad IsBroken devuelve True (–1) sólo si el objeto Reference ya no apunta a una referencia válida en el Registro.

Comentarios

Al evaluar la propiedad IsBroken, puede determinar si el archivo asociado a un objeto Reference determinado se ha movido a un directorio diferente o se ha eliminado.

Si la propiedad IsBroken tiene el valor True, Microsoft Access genera un error al intentar leer las propiedades Nombre (Name) o FullPath.


Propiedad IsCompiled

La propiedad IsCompiled devuelve un valor Boolean que indica si un proyecto Visual Basic se encuentra en un estado compilado.

Valores

La propiedad IsCompiled está disponible sólo mediante Visual Basic y es de sólo lectura.

La propiedad IsCompiled devuelve True (–1) si el proyecto se encuentra en un estado compilado.

Comentarios

Puede forzar a Visual Basic a compilar el proyecto desde la interfaz de usuario mientras esté en la vista Diseño haciendo clic en Compilar todos los módulos o en Compilar y guardar todos los módulos en el menú Depurar.

La propiedad IsCompiled de un objeto Application es False (0) cuando el proyecto nunca ha sido compilado completamente, si un módulo ha sido agregado, editado o eliminado después de la compilación, o si el módulo no se ha guardado en un estado compilado.


Propiedad BuiltIn (Microsoft Access)
Propiedad BuiltIn

La propiedad BuiltIn devuelve un valor Boolean que indica si un objeto Reference apunta a una referencia predeterminada necesaria para que Microsoft Access funcione correctamente.

Valores

La propiedad BuiltIn está disponible sólo mediante Visual Basic y es de sólo lectura.

La propiedad BuiltIn devuelve los valores siguientes.

Valor	Descripción
True (–1)	El objeto Reference hace referencia a una referencia predeterminada que no puede quitarse.
False (0)	El objeto Reference hace referencia a una referencia no predeterminada que no es necesaria para que Microsoft Access funcione correctamente.
Comentarios

Las referencias predeterminadas de Microsoft Access incluyen la biblioteca de objetos de Microsoft Access 8.0 y la biblioteca de Visual Basic para aplicaciones.


Ejemplo de la propiedad BuiltIn

El ejemplo siguiente imprime las referencias predeterminadas de la colección References:

Sub ReferenciaIncorporadaSólo()

Dim ref As Reference

' Enumerar la colección Referencias.

For Each ref In References

' Comprobar la propiedad BuiltIn.

If ref.BuiltIn = True Then

Debug.Print ref.Name

End If

Next ref

End Sub


Propiedad FullPath

La propiedad FullPath devuelve una cadena que contiene la ruta de acceso y el nombre de archivo de la biblioteca de tipos a la que se hace referencia.

Valores

La propiedad FullPath está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

Las bibliotecas de tipos residen en archivos. La tabla siguiente muestra las extensiones de archivo de los archivos que normalmente contienen bibliotecas de tipos.

Extensión de archivo	Tipo de archivo
.olb, .tlb	Archivo de biblioteca de tipos
.mdb, .mda, .mde	Base de datos
.exe, .dll	Archivo ejecutable
.ocx	Control ActiveX
Si el valor de la propiedad IsBroken de un objeto Reference es True (–1), la lectura de la propiedad FullPath genera un error.


Ejemplo de las propiedades FullPath, GUID, IsBroken, Major y Minor

El ejemplo siguiente muestra el valor de las propiedades FullPath, GUID, IsBroken, Major y Minor para cada objeto Reference de la colección References:

Sub PropiedadesReferencia()

Dim ref As Reference

' Enumerar la colección References.

For Each ref In References

' Comprobar la propiedad IsBroken.

If ref.IsBroken = False Then

Debug.Print "Nombre: ", ref.Name

Debug.Print "Ruta de acceso completa: ", ref.FullPath

Debug.Print "Versión: ", ref.Major & "." & ref.Minor

Else

Debug.Print "GUID de referencias rotas:"

Debug.Print ref.GUID

EndIf

Next ref

End Sub


Propiedad Lines

La propiedad Lines devuelve una cadena que almacena el contenido de una línea o líneas especificadas de un módulo estándar o un módulo de clase.

Valores

objeto.Lines(línea, númlíneas)

La propiedad Lines puede tener los valores siguientes.

Valor	Descripción
objeto	Un objeto Module.
línea	Un valor Largo que especifica el número de línea de la primera línea para devolver.
Númlíneas	Un valor Largo que especifica el número de líneas para devolver.
La propiedad Lines está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

Las líneas de un módulo se numeran a partir de 1. Por ejemplo, si lee la propiedad Lines con un valor de 1 para el argumento línea y 1 para el argumento númlíneas, la propiedad Lines devuelve una cadena que contiene el texto de la primera línea del módulo.

Para insertar una línea de texto en un módulo, utilice el método InsertLines.


Propiedad Major

La propiedad Major de un objeto Reference devuelve un valor Largo que indica el número de versión principal de una aplicación para la cual ha establecido una referencia.

Valores

La propiedad Major está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

La propiedad Major devuelve el valor situado a la izquierda del punto en un número de versión. Por ejemplo, si ha establecido una referencia a una aplicación cuyo número de versión es 2.5, la propiedad Major devuelve 2.


Propiedad Minor

La propiedad Minor de un objeto Reference devuelve un valor Largo que indica el número de versión secundario de la aplicación para la cual ha establecido una referencia.

Valores

La propiedad Minor está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

La propiedad Minor devuelve el valor situado a la derecha del punto en un número de versión. Por ejemplo, si ha establecido una referencia a una aplicación cuyo número de versión es 2.5, la propiedad Minor devuelve 5.


Propiedad ProcStartLine

La propiedad ProcStartLine devuelve un valor Largo que identifica la línea en la que comienza un procedimiento especificado en un módulo estándar o un módulo de clase. El procedimiento comienza por los comentarios y las constantes de compilación que preceden inmediatamente a la definición de procedimiento, indicada por una de las siguientes instrucciones:

•	Una instrucción Sub.

•	Una instrucción Function.

•	Una instrucción Property Get.

•	Una instrucción Property Let.

•	Una instrucción Property Set.

Valores

objeto.ProcStartLine(nombreproc, tipoproc)

La propiedad ProcStartLine puede tener los valores siguientes:

Valor	Descripción
objeto	Un objeto Module.
nombreproc	Una expresión de cadena que da como resultado el nombre de un procedimiento del módulo.
tipoproc	Una constante intrínseca que especifica el tipo de procedimiento. La constante puede ser uno de los valores siguientes.
	Constante	Descripción
	vbext_pk_Get	Un procedimiento Property Get.
	vbext_pk_Let	Un procedimiento Property Let.
	vbext_pk_Proc	Un procedimiento Sub o Function.
	vbext_pk_Set	Un procedimiento Property Set.
La propiedad ProcStartLine está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

La propiedad ProcStartLine devuelve el número de la línea en la que comienza el procedimiento especificado. El comienzo del procedimiento puede incluir comentarios o constantes de compilación que preceden a la definición de procedimiento.

Para determinar la línea en la que comienza la definición de procedimiento, utilice la propiedad ProcBodyLine. Esta propiedad devuelve el número de la línea que comienza por una instrucción Sub, Function, Property Get, Property Let o Property Set.

Las propiedades ProcStartLine y ProcBodyLine pueden tener el mismo valor, si la definición de procedimiento es la primera línea del procedimiento. Si la definición de procedimiento no es la primera línea del procedimiento, la propiedad ProcBodyLine tendrá un valor mayor que la propiedad ProcStartLine.

Notas

•	Puede ser más fácil determinar dónde comienza un procedimiento si tiene la opción Separador de procedimientos seleccionada. Con esta opción seleccionada, se incluye una línea entre el final del procedimiento y el comienzo del procedimiento siguiente. La primera línea de código (o línea en blanco) situada bajo el separador de procedimientos es la primera línea del procedimiento siguiente, que es la línea devuelta por la propiedad ProcStartLine. La opción Separador de procedimientos aparece en la ficha Módulo del cuadro de diálogo Opciones, disponible al elegir Opciones en el menú Herramientas. Para seleccionar la casilla de verificación Separador de procedimientos, primero active la casilla de verificación Ver módulo completo.

•	La propiedad ProcStartLine trata a los procedimientos Sub y Function de forma similar, pero distingue entre cada tipo de procedimiento Property.


Ejemplo de las propiedades ProcStartLine, ProcBodyLine y ProcCountLines

La siguiente función muestra información acerca de un procedimiento especificado de un módulo en la ventana Depuración:

Function InfoLíneaProc(cadNombreMódulo As String, cadNombreProc As String)

Dim mdl As Module

Dim lngLíneaInicio As Long, lngLíneaCuerpo As Long

Dim lngCuenta As Long, lngFinProc As Long

' Abrir el objeto Module especificado.

DoCmd.OpenModule cadNombreMódulo

' Devolver la referencia al objeto Module.

Set mdl = Modules(cadNombreMódulo)

' Contar las líneas del procedimiento.

lngCuenta = mdl.ProcCountLines(cadNombreProc, vbext_pk_Proc)

' Determinar la línea inicial.

lngLíneaInicio = mdl.ProcStartLine(cadNombreProc, vbext_pk_Proc)

' Determinar la línea de cuerpo.

lngLíneaCuerpo = mdl.ProcBodyLine(cadNombreProc, vbext_pk_Proc)

Debug.Print

' Mostrar todas las líneas del procedimiento anteriores a la línea de cuerpo.

Debug.Print "Líneas que preceden al procedimiento" & cadNombreProc & ": "

Debug.Print mdl.Lines(lngLíneaInicio, lngLíneaCuerpo - lngLíneaInicio)

' Determinar el número de línea de la última línea del procedimiento.

lngFinProc = (lngLíneaCuerpo + lngCuenta - 1) - Abs(lngLíneaCuerpo - lngLíneaInicio)

' Mostrar todas las líneas del cuerpo del procedimiento.

Debug.Print "Líneas del cuerpo: "

Debug.Print mdl.Lines(lngLíneaCuerpo, (lngFinProc - lngLíneaCuerpo) + 1)

End Function

Puede llamar a esta función desde la base de datos de ejemplo Neptuno mediante un procedimiento como el siguiente:

Sub ObtenerInfoProc()

InfoLíneaProc "Funciones de utilidades", "EstáCargado"

End Sub


Propiedad ProcCountLines

La propiedad ProcCountLines devuelve un valor Largo que contiene el número de líneas de un procedimiento especificado de un módulo estándar o un módulo de clase. El procedimiento comienza por los comentarios y las constantes de compilación que preceden inmediatamente a la definición de procedimiento, indicada por una de las siguientes instrucciones:

•	Una instrucción Sub.

•	Una instrucción Function.

•	Una instrucción Property Get.

•	Una instrucción Property Let.

•	Una instrucción Property Set.

Valores

objeto.ProcCountLines(nombreproc, tipoproc)

La propiedad ProcCountLines puede tener los valores siguientes.

Valor	Descripción
objeto	Un objeto Module.
nombreproc	Una expresión de cadena que da como resultado el nombre de un procedimiento del módulo.
tipoproc	Una constante intrínseca que especifica el tipo de procedimiento. La constante puede tener uno de los valores siguientes.
	Constante	Descripción
	vbext_pk_Get	Un procedimiento Property Get.
	vbext_pk_Let	Un procedimiento Property Let.
	vbext_pk_Proc	Un procedimiento Sub o Function.
	vbext_pk_Set	Un procedimiento Property Set.
La propiedad ProcCountLines está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

La propiedad ProcCountLines devuelve el número de líneas de un procedimiento, comenzando por la línea devuelta por la propiedad ProcStartLine y terminando por la línea que termina el procedimiento. El procedimiento puede terminar con End Sub, End Function o End Property.

Nota   La propiedad ProcCountLines trata los procedimientos Sub y Function de forma similar, pero distingue entre cada tipo de procedimiento Property.


Propiedad ProcBodyLine

La propiedad ProcBodyLine devuelve un valor Largo que contiene el número de la línea en la que comienza el cuerpo de un procedimiento especificado en un módulo estándar o un módulo de clase. El cuerpo de un procedimiento comienza por la definición de procedimiento, indicado por una de las siguientes instrucciones:

•	Una instrucción Sub.

•	Una instrucción Function.

•	Una instrucción Property Get.

•	Una instrucción Property Let.

•	Una instrucción Property Set.

Valores

objeto.ProcBodyLine(nombreproc, tipoproc)

La propiedad ProcBodyLine utiliza los valores siguientes.

Valor	Descripción
objeto	Un objeto Module.
nombreproc	Una expresión de cadena que da como resultado el nombre de un procedimiento del módulo.
tipoproc	Una constante intrínseca que especifica el tipo de procedimiento. La constante puede ser uno de los valores siguientes.
	Constante	Descripción
	vbext_pk_Get	Un procedimiento Property Get.
	vbext_pk_Let	Un procedimiento Property Let.
	vbext_pk_Proc	Un procedimiento Sub o Function.
	vbext_pk_Set	Un procedimiento Property Set.
La propiedad ProcBodyLine está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

La propiedad ProcBodyLine devuelve un número de línea que identifica la línea en la que comienza la definición de procedimiento. En oposición, la propiedad ProcStartLine devuelve un número que identifica la línea en la que un procedimiento se separa del procedimiento anterior de un módulo. Todos los comentarios o las constantes de compilación que preceden a la definición de procedimiento (el cuerpo de un procedimiento) se consideran parte del procedimiento, pero la propiedad ProcBodyLine los ignora.

Nota   La propiedad ProcBodyLine trata los procedimientos Sub y Function de forma similar, pero distingue entre cada tipo de procedimiento Property.


Propiedad ProcOfLine

La propiedad ProcOfLine devuelve una cadena con el nombre del procedimiento que contiene una línea especificada en un módulo estándar o un módulo de clase. El cuerpo de un procedimiento comienza por la definición de procedimiento, indicada por una de las siguientes instrucciones:

•	Una instrucción Sub.

•	Una instrucción Function.

•	Una instrucción Property Get.

•	Una instrucción Property Let.

•	Una instrucción Property Set.

Valores

objeto.ProcOfLine(línea, ptipoproc)

La propiedad ProcOfLine puede tener los valores siguientes.

Valor	Descripción
objeto	Un objeto Module.
línea	Un valor Largo que especifica el número de una línea en el módulo.
ptipoproc	Un valor Largo que indica el tipo de procedimiento que contiene la línea especificada por el argumento línea. Cuando devuelva el valor de la propiedad ProcOfLine, el valor del argumento ptipoproc se establece a una constante intrínseca que especifica el tipo de procedimiento al que pertenece la línea. La constante puede ser uno de los valores siguientes.
	Constante	Valor	Descripción
	vbext_pk_Get	3	Un procedimiento Property Get.
	vbext_pk_Let	1	Un procedimiento Property Let.
	vbext_pk_Proc	0	Un procedimiento Sub o Function.
	vbext_pk_Set	2	Un procedimiento Property Set.
La propiedad ProcOfLine está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

Para cualquier número de línea dado, la propiedad ProcOfLine devuelve el nombre del procedimiento que contiene esa línea. Dado que los comentarios y las constantes de compilación que preceden inmediatamente a una definición de procedimiento se consideran parte de ese procedimiento, la propiedad ProcOfLine puede devolver el nombre de un procedimiento de una línea que no se encuentra dentro del cuerpo del procedimiento. La propiedad ProcStartLine indica la línea en la que comienza un procedimiento; la propiedad ProcBodyLine indica la línea en la que comienza la definición de procedimiento (el cuerpo del procedimiento).

Observe que el argumento ptipoproc indica si la línea pertenece al procedimiento Sub o al procedimiento Function, al procedimiento Property Get, al procedimiento Property Let o al procedimiento Property Set. Para determinar en qué tipo de procedimiento está una línea, pase una variable de tipo Largo a la propiedad ProcOfLine, y a continuación compruebe el valor de esa variable.

Nota   La propiedad ProcBodyLine trata los procedimientos Sub y Function de forma similar, pero distingue entre cada tipo de procedimiento Property.


Ejemplo de la propiedad ProcOfLine

El procedimiento de la función siguiente enumera los nombres de todos los procedimientos de un módulo especificado:

Function TodosLosProcs(cadNombreMódulo As String)

Dim mdl As Module

Dim lngCuenta As Long, lngDeclCuenta As Long, lngI As Long

Dim cadNombreProc As String, acadNombresProc() As String

Dim entI As Integer, cadMsj As String

Dim larR As Long

' Abrir el objeto Module especificado.

DoCmd.OpenModule cadNombreMódulo

' Devolver referencia al objeto Module.

Set mdl = Modules(cadNombreMódulo)

' Contar las líneas del módulo.

lngCuenta = mdl.CountOfLines

' Contar las líneas de la sección Declaraciones del módulo.

lngDeclCuenta = mdl.CountOfDeclarationLines

' Determinar el nombre del primer procedimiento.

cadNombreProc = mdl.ProcOfLine(lngDeclCuenta + 1, larR)

' Inicializar la variable de contador.

entI = 0

' Redimensionar la matriz.

ReDim Preserve acadNombresProc(entI)

' Almacenar el nombre del primer procedimiento en la matriz.

acadNombresProc(entI) = cadNombreProc

' Determinar el nombre del procedimiento para cada línea después de las declaraciones.

For lngI = lngDeclCuenta + 1 To lngCuenta

' Comparar el nombre de procedimiento con el valor de la propiedad ProcOfLine.

If cadNombreProc <> mdl.ProcOfLine(lngI, larR) Then

' Incrementar el contador.

entI = entI + 1

cadNombreProc = mdl.ProcOfLine(lngI, larR)

ReDim Preserve acadNombresProc(entI)

' Asignar nombres de procedimientos exclusivos a la matriz.

acadNombresProc(entI) = cadNombreProc

End If

Next lngI

cadMsj = "Procedimientos del módulo '" & cadNombreMódulo & "': " _

& vbCrLf & vbCrLf

For entI = 0 To UBound(acadNombresProc)

cadMsj = cadMsj & acadNombresProc(entI) & vbCrLf

Next entI

' Cuadro de diálogo que enumera todos los procedimientos del módulo.

MsgBox cadMsj

End Function

Puede llamar a esta función con un procedimiento como el siguiente:

Sub ObtenerTodosLosProcs()

TodosLosProcs "Funciones de utilidad"

End Sub


Propiedad Collection (Microsoft Access)
Propiedad Collection

La propiedad Collection devuelve una referencia a la colección que contiene un objeto.

Valores

La propiedad Collection está disponible sólo mediante Visual Basic y es de sólo lectura.

Comentarios

Puede utilizar la propiedad Collection para tener acceso a la colección a la que pertenece un objeto. Por ejemplo, la propiedad Collection de un objeto Reference devuelve una referencia de objeto a la colección References.

La propiedad Collection es similar a la propiedad Principal (Parent).


Propiedad Type (Microsoft Access)
Propiedad Type

La propiedad Type indica si un módulo es un módulo estándar o un módulo de clase.

Valores

La propiedad Type está disponible sólo mediante Visual Basic y es de sólo lectura.

Si el módulo es un módulo estándar, el valor de la propiedad Type es acStandardModule o 0. Si el módulo es un módulo de clase, el valor de la propiedad Type es acClassModule o 1.


Ejemplo de la propiedad Type

El ejemplo siguiente determina si un objeto Module representa un módulo estándar o un módulo de clase:

Function ComprobarTipoMódulo(cadNombreMódulo As String) As Integer

Dim mdl As Module

' Abrir el módulo para incluirlo en la colección Modules.

DoCmd.OpenModule cadNombreMódulo

' Devolver referencia al objeto Module.

Set mdl = Modules(cadNombreMódulo)

' Comprobar la propiedad Type.

If mdl.Type = acClassModule Then

' Insertar comentario.

mdl.InsertLines 1, "' Módulo de clase."

ComprobarTipoMódulo = acClassModule

Else

' Insertar comentario.

mdl.InsertLines 1, "' Módulo estándar."

ComprobarTipoMódulo = acStandardModule

End If

End Function


Propiedad DistribuciónDeLaImagen (PictureAlignment)

La propiedad DistribuciónDeLaImagen (PictureAlignment) se puede utilizar para especificar dónde aparecerá la imagen de fondo en un control de imagen o en un formulario o informe.

Valores

La propiedad DistribuciónDeLaImagen (PictureAlignment) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Parte superior Izquierda	La imagen se muestra en la esquina izquierda de la parte superior del control de imagen, la ventana Formulario o la página de un informe.	0
Parte superior derecha	La imagen se muestra en la esquina derecha de la parte superior del control de imagen, la ventana Formulario o la página de un informe.	1
Centro	(Predeterminado) La imagen se centra en el control de imagen, la ventana Formulario o la página de un informe.	2
Parte inferior izquierda	La imagen se muestra en la esquina izquierda de la parte inferior del control de imagen, la ventana Formulario o la página de un informe.	3
Parte inferior derecha	La imagen se muestra en la esquina derecha de la parte inferior del control de imagen, la ventana Formulario o la página de un informe.	4
Centro del formulario	(Sólo formularios) La imagen del formulario se centra horizontalmente en  relación al ancho del formulario y verticalmente en relación con el alto del formulario completo.	5
La propiedad DistribuciónDeLaImagen (PictureAlignment) se puede establecer usando la hoja de propiedades de un formulario o informe, una macro o Visual Basic.

También puede establecer el valor predeterminado para esta propiedad mediante el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Esta propiedad puede ser configurada en cualquier vista.

Comentarios

Los valores de Centro del formulario alinean la imagen de un formulario en el centro del propio formulario. Todos los demás valores de la propiedad DistribuciónDeLaImagen (PictureAlignment) alinean la imagen de un formulario en relación con la ventana Formulario. Si desea asegurarse de que la imagen del formulario se muestra solamente en el formulario o en formato de mosaico sólo en el formulario, establezca Centro del formulario en la propiedad DistribuciónDeLaImagen (PictureAlignment).

Para los informes, la imagen aparece en relación a una página completa  y no en relación al tamaño del informe actual. Si el informe fuera menor que una página completa y desea que aparezca una imagen en una ubicación que no esté disponible a través de los valores de la propiedad DistribuciónDeLaImagen (PictureAlignment), utilice en su lugar un control Imagen.

Cuando la propiedad MosaicoDeImágenes (PictureTiling) se establece a Sí, el formato de mosaico comenzará desde los valores de la propiedad DistribuciónDeLaImagen (PictureAlignment).


Propiedad PictureData

La propiedad PictureData se puede utilizar para copiar la imagen de un formulario, informe o control a otro objeto que acepte la propiedad Imagen (Picture).

Valores

El valor de la propiedad PictureData es la propiedad PictureData de otro control de imagen, botón de comando, botón de alternar, formulario o informe.

Esta propiedad se establece usando Visual Basic.

Comentarios

Esta propiedad se utiliza para mostrar una imagen de fondo diferente en un formulario, dependiendo de las acciones realizadas por el usuario. Por ejemplo, podría abrir un formulario Clientes usando una imagen de fondo diferente dependiendo de si el formulario se abre para introducir datos o para ser examinado.

La propiedad PictureData también se puede utilizar junto con el evento Timer y la propiedad IntervaloDeCronómetro (TimerInterval) para realizar una animación simple en un formulario.


Ejemplo de la propiedad PictureData

El siguiente ejemplo utiliza tres controles de imagen para animar una imagen de una mariposa que cruza un formulario. El control Oculto1 contiene una imagen de una mariposa con sus alas hacia arriba y el control Oculto2 contiene una imagen de la misma mariposa con sus alas hacia abajo. Ambos controles de imagen tienen su propiedad Visible establecida a False (0). La propiedad IntervaloDeCronómetro (TimerInterval) está establecida a 200. Cada vez que sucede el evento Timer, la imagen en el control de imagen Visible1 se cambia usando la propiedad PictureData de los controles de imagen ocultos y el control de imagen visible se mueve 200 twips hacia la derecha. El control de la imagen visible se mueve de nuevo hacia el lado izquierdo del formulario cuando el valor de su propiedad Izquierda (Left) es mayor que el ancho del formulario guardado en la variable pública gfrmWidth. El valor de gfrmWidth se establece a Me.Width en el evento de apertura del formulario.

Private Sub Form_Cronómetro()

Static intPic As Integer

Select Case intPic

Case Is = 1

Me!Visible1.PictureData = Me!Oculto1.PictureData

Case Is = 2

Me!Visible1.PictureData = Me!Oculto2.PictureData

Case Else

End Select

If intPic = 2 Then intPic = 0

intPic = intPic + 1

If (Me!Visible1.Izquierda > gfrmWidth) Then Me!Visible1.Izquierda = 0

Me!Visible1.Izquierda = Me!Visible1.Izquierda + 200

End Sub


Propiedad PáginasDeLaImagen (PicturePages)

La propiedad PáginasDeLaImagen (PicturePages) se puede utilizar para especificar en qué página o páginas de un informe se mostrará una imagen.

Valores

La propiedad PáginasDeLaImagen (PicturePages) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Todas las Páginas	(Predeterminado) La imagen aparece en todas las páginas del informe.	0
Primera Página	La imagen aparece sólo en la primera página del informe.	1
Ninguna Página	La imagen no aparece en el informe.	2
La propiedad PáginasDeLaImagen (PicturePages) se puede establecer usando la hoja de propiedades de un informe, una macro o Visual Basic.


Propiedad ModoCambiarTamañoDeLaImagen (PictureSizeMode)

La propiedad ModoCambiarTamañoDeLaImagen (PictureSizeMode) se puede utilizar para especificar cómo se obtiene el tamaño de una imagen para un formulario o informe.

Valores

La propiedad ModoCambiarTamañoDeLaImagen (PictureSizeMode) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Recortar	(Predeterminado) La imagen se muestra en su tamaño actual. Si la imagen es mayor que el formulario o informe, se recortará la imagen.	0
Extender	La imagen se extiende horizontal y verticalmente para rellenar el formulario completo, incluso si su relación original de alto sobre ancho resulta distorsionada.	1
Zoom	La imagen se alarga hasta su máxima extensión mientras mantiene su relación original de alto sobre ancho.	3
La propiedad ModoCambiarTamañoDeLaImagen (PictureSizeMode) se puede establecer usando la hoja de propiedades de un formulario o informe, una macro o Visual Basic.

Comentarios

Cuando se utiliza una imagen pequeña para la propiedad Imagen (Picture) de un formulario o informe, el establecimiento de la propiedad ModoCambiarTamañoDeLaImagen (PictureSizeMode) a Extender o Zoom puede causar una distorsión importante en su resolución. Las imágenes más pequeñas pueden ser presentadas en formato mosaico en todo el formulario usando la propiedad MosaicoDeImágenes (PictureTiling).


Propiedad MosaicoDeImágenes (PictureTiling)

La propiedad MosaicoDeImágenes (PictureTiling) se puede utilizar para especificar si una imagen de fondo será presentada en formato de mosaico en todo el control de imagen, ventana Formulario, formulario o página de un informe.

Valores

La propiedad MosaicoDeImágenes (PictureTiling) utiliza los siguientes valores.

Valor	Descripción	Visual Basic
Sí	La imagen se presenta en formato de mosaico	True (-1)
No	(Predeterminado) La imagen no se presenta en formato de mosaico.	False (0)
La propiedad MosaicoDeImágenes (PictureTiling) se puede establecer usando la hoja de propiedades del objeto, una macro o Visual Basic.

También puede establecer el valor predeterminado para esta propiedad mediante el estilo de control predeterminado o el método DefaultControl en Visual Basic.

Comentarios

Se pueden crear efectos interesantes colocando una imagen en un formulario o informe y estableciendo la propiedad MosaicoDeImágenes (PictureTiling) a Sí. La alineación de las imágenes en forma de mosaico se ve afectada por los valores de la propiedad DistribuciónDeLaImagen (PictureAlignment). Por ejemplo, si la propiedad DistribuciónDeLaImagen (PictureAlignment) se establece a Superior Izquierda, la distribución en forma de mosaico comienza en la parte superior izquierda de la ventana del control de imagen, del formulario, de la ventana Formulario, de la página o del informe.

Nota   Si la propiedad DistribuciónDeLaImagen (PictureAlignment) se establece a Centro del formulario y la propiedad MosaicoDeImágenes (PictureTiling) se establece a Sí, la imagen del fondo de un formulario será en forma de mosaico por todo el formulario, pero no por la ventana Formulario.


¿Qué es una expresión?

Las expresiones son un componente fundamental de numerosas operaciones en Microsoft Access. Una expresión es una combinación de símbolos (identificadores, operadores y valores) que produce un resultado.

Por ejemplo, puede utilizar la expresión siguiente en un control de un formulario o de un informe para mostrar la suma de los valores de los controles Subtotal y Transporte:

= [Subtotal] + [Transporte]

Éstos son algunos ejemplos de operaciones comunes en las que se utilizan expresiones:

•	Establecer una propiedad que define un control calculado, establecer una regla de validación o establecer un valor predeterminado de un campo.

•	Introducir una expresión de criterio, crear un campo calculado o actualizar los registros de una consulta o filtro.

•	Establecer una condición para realizar una acción o serie de acciones de una macro, o especificar argumentos para varias acciones.

•	Especificar argumentos para funciones, instrucciones y métodos de procedimientos de Visual Basic para aplicaciones.

•	Editar una consulta SQL en la vista SQL de la ventana Consulta o utilizar una instrucción SQL como valor de una propiedad o como argumento.

Para obtener información sobre la forma de crear una expresión, haga en [image].

Para ver ejemplos de expresiones, haga clic en  [image].


Crear una expresión

Al crear una expresión combinará identificadores, valores y operadores para formar una unidad que produce un resultado. Las expresiones pueden ser tan simples como las aritméticas (por ejemplo, 1 + 1), que producen un resultado numérico (2) o pueden realizar operaciones complejas con los datos, como en la expresión de validación siguiente, que genera un error si el valor del campo País es Francia, Italia o España y el campo CódigoPostal contiene menos o más de cinco caracteres:

= [País] En ("Francia", "Italia", "España") Y Longitud([CódigoPostal])<>5

Puede crear una expresión con el Generador de expresiones, o también puede crearla directamente combinando los elementos de la expresión de forma que produzcan el resultado deseado.

¿Qué desea hacer?

Crear una expresión con el Generador de expresiones

Crear una expresión directamente

Leer más sobre qué son las expresiones

Ver ejemplos de expresiones


Crear una expresión con el Generador de expresiones

1	Inicie el Generador de expresiones.

¿Cómo?

2	En el cuadro inferior izquierdo del Generador de expresiones, haga clic o doble clic en la carpeta que contenga el elemento deseado.

3	En el cuadro inferior intermedio, haga doble clic en un elemento para pegarlo en el cuadro de la expresión, o bien haga clic en una categoría de elementos.

4	Si ha seleccionado una categoría en el cuadro inferior intermedio, aparecerán valores en el cuadro inferior derecho. Haga doble clic en uno de ellos para pegarlo en el cuadro de la expresión.

Sugerencia   También puede escribir cualquier parte de la expresión directamente en el cuadro de la expresión.

5	Pegue los operadores que desee en la expresión situando el punto de inserción en el lugar del cuadro de la expresión donde desee colocar el operador y haciendo clic en uno de los botones de operadores que se encuentran en el centro del Generador.

6	Cuando la expresión esté terminada, haga clic en Aceptar.

Microsoft Access copiará la expresión en el lugar donde se inició el Generador de expresiones. Si ya existía un valor, o si se inició el Generador en la ventana Módulo teniendo texto seleccionado, la nueva expresión reemplazará al valor ocal texto existente.

Para obtener más información acerca del Generador de expresiones, haga clic en  [image].


Iniciar el Generador de expresiones

Puede iniciar el Generador de expresiones desde la mayoría de los lugares en los que es posible escribir expresiones, como por ejemplo una hoja de propiedades, la celda Criterio de una cuadrícula de diseño de una consulta, la ventana Macro o la ventana Módulo.

¿Qué desea hacer?

Iniciar el Generador de expresiones en una hoja de propiedades o en la ventana Macro

Iniciar el Generador de expresiones en la cuadrícula de diseño de consulta, en una condición de una macro o en un módulo


Iniciar el Generador de expresiones en una hoja de propiedades o en la ventana Macro

1	Haga clic en el cuadro de la propiedad o del argumento que vaya a contener la expresión.

2	Haga clic en el botón Generar [image] situado junto al cuadro de la propiedad o argumento.

Si una propiedad tiene asociado más de un generador, Microsoft Access mostrará el cuadro de diálogo Elegir generador. Haga clic en Generador de expresiones y luego en Aceptar.

Nota   Si el cuadro de la propiedad o argumento en el que se inicia el Generador de expresiones ya contiene un valor, éste se copiará automáticamente en el cuadro de expresión.


Iniciar el Generador de expresiones en la cuadrícula de diseño de consulta, en una condición de una macro o en un módulo

Puede iniciar el Generador de expresiones en una celda Campo o Criterios de la vista Diseño de la consulta, en la columna Condición de la ventana Macro o en la ventana Módulo.

1	Haga clic con el botón secundario en el lugar donde desee insertar la expresión.

2	En el menú contextual, haga clic en Generar.

Nota   Si la celda o la columna Condición donde se inicia el Generador de expresiones ya contiene un valor, éste se copiará automáticamente en el cuadro de la expresión. Para copiar texto de la ventana Módulo en el Generador de expresiones, selecciónelo antes de iniciar el Generador.


Crear una expresión sin utilizar el Generador de expresiones

Puede crear una expresión combinando identificadores, operadores y valores para obtener el resultado que desee. Por ejemplo, la expresión siguiente incrementa en un 10 por ciento el valor mostrado en el control Transporte del formulario Pedidos:

= [Formularios]![Pedidos]![Transporte] * 1,1

En esta expresión:

•	Formularios![Pedidos]![Transporte] es un identificador que hace referencia al valor del control Transporte del formulario Pedidos.

•	* es el operador de multiplicación.

•	1,1 es el valor por el que Microsoft Access multiplica el valor del control Transporte.

Dependiendo del resultado buscado, puede combinar los identificadores, operadores y valores de diversas formas. Puede usar expresiones para combinar cadenas de texto, sumar o multiplicar valores numéricos, llamar a funciones, hacer referencia a objetos y sus valores y realizar muchas otras operaciones.

Algunas expresiones producen un resultado verdadero o falso. Por ejemplo, si introduce una expresión en la columna Condición de una macro, Microsoft Access llevará a cabo la acción especificada solamente cuando la expresión dé un resultado verdadero. La expresión siguiente sólo es verdadera cuando el valor mostrado en el control País del formulario Empleados sea Reino Unido:

Formularios![Empleados]![País] = "Reino Unido"

Para obtener más información acerca del uso de identificadores en las expresiones, haga clic en  [image].

Para obtener más información acerca de los operadores, haga clic en  [image].

Para obtener más información acerca del uso de valores en expresiones, haga clic en  [image].


Hacer referencia a un objeto o a sus propiedades en las expresiones

Para hacer referencia a un objeto o a sus propiedades en una expresión se utiliza un identificador. Por ejemplo, puede hacer referencia a un formulario abierto, a un informe abierto, a un control de un formulario o informe abierto, o a cualquiera de las propiedades del formulario, informe o control. El siguiente identificador hace referencia a la propiedad Visible de un control:

Informes![Factura]![NombreEnvío].Visible

El identificador completo de un objeto o propiedad muestra la relación entre los elementos que lo componen. En el identificador anterior:

•	Informes hace referencia a la colección de informes abiertos de la base de datos. Microsoft Access crea automáticamente las colecciones Formularios y Informes de cada base de datos. La colección Formularios está formada por todos los formularios abiertos y la colección Informes está formada por todos los informes abiertos.

•	[Factura] hace referencia al informe Factura de la colección Informes.

•	[NombreEnvío] hace referencia al control NombreEnvío del informe Factura.

•	Visible hace referencia a la propiedad Visible del control NombreEnvío.

A menudo se recomienda hacer referencia a un objeto o propiedad mediante su identificador completo. En algunos casos esto es obligatorio. Por ejemplo, para hacer referencia a un control de un formulario o informe que no es el formulario o informe activo, debe escribir su identificador completo. La expresión siguiente muestra la suma de los valores de los controles Subtotal y Transporte del formulario Pedidos en un control de un formulario distinto:

= Formularios![Pedidos]![Subtotal] + Formularios![Pedidos]![Transporte]

Sin embargo, en algunas circunstancias podrá hacer referencia a un control o a sus propiedades sin especificar un identificador completo:

•	Si hace referencia a un control del formulario o informe activo, no es necesario especificar el identificador del formulario o informe. Por ejemplo, para mostrar la suma de los valores de los controles Subtotal y Transporte en otro control del mismo formulario, establezca la expresión siguiente en la propiedad OrigenDelControl (ControlSource) de ese control:

= [Subtotal] + [Transporte]

•	Para hacer referencia a un control de un subformulario o subinforme, no es necesario especificar el identificador completo del formulario o informe que utiliza la propiedad Formulario (Form) o Informe (Report). Por ejemplo, puede utilizar el identificador siguiente para hacer referencia al control Cantidad del subformulario Subformulario Pedidos:

Formularios![Pedidos]![Subformulario Pedidos]![Cantidad]

El identificador completo del control Cantidad sería el siguiente:

Formularios![Pedidos]![Subformulario Pedidos].Formulario![Cantidad]

•	En un argumento de acción o en una macro, no es necesario especificar el identificador del formulario o informe desde el cual se ejecuta la macro. Por ejemplo, si establece como propiedad de evento de un formulario el nombre de una macro, en la columna Condición de la macro o en los argumentos de acción puede hacer referencia a los controles del formulario sin especificar el identificador del formulario.

•	En un procedimiento de Visual Basic para aplicaciones, puede utilizar la palabra clave Me en lugar del identificador completo para hacer referencia a un control del formulario o informe activo. Por ejemplo, para asignar la suma de los valores de los controles Subtotal y Transporte de un formulario a la variable TotalPedido en uno de los procedimientos de evento del formulario, puede agregar la instrucción siguiente al procedimiento de evento:

TotalPedido = Me![Subtotal] + Me![Transporte]

Notas

•	Al ejecutar una macro o código de Visual Basic para aplicaciones que contenga una expresión que hace referencia a un formulario o informe, debe estar abierto dicho formulario o informe.

•	En un procedimiento de Visual Basic, puede hacer referencia a un objeto indicando su nombre entre paréntesis y comillas dobles("), en lugar de emplear el operador !. La sintaxis con paréntesis es obligatoria cuando se desea incluir una variable en un identificador. Por ejemplo, los identificadores siguientes son equivalentes:

Formularios![Pedidos]![FechaPedido]

Formularios("Pedidos")("FechaPedido")

Para obtener más información acerca del uso de los operadores !  y . (punto) en las expresiones, haga clic en  [image].

Para obtener más información acerca de la forma de hacer referencia a un formulario, informe, subformulario o subinforme en una expresión, haga clic en  [image].

Para obtener más información acerca de la forma de hacer referencia al valor de un control o de una propiedad en una expresión, haga clic en  [image].


Utilizar valores en expresiones

Puede especificar un valor en una expresión utilizando un valor literal, una constante, una función o un identificador:

•	Un valor literal representa algo como un número, una cadena o una fecha que Microsoft Access evalúa exactamente como está escrito. "Nueva York", 100 y #1-Ene-94# son ejemplos de valores literales. Las fechas se escriben entre símbolos (#) y las cadenas entre comillas dobles (").

•	Una constante representa un valor que no cambia. Verdadero, Falso y Nulo son ejemplos de constantes que Microsoft Access define automáticamente. También puede definir sus propias constantes en Visual Basic para aplicaciones y utilizarlas en los procedimientos de Visual Basic.

•	Una función devuelve un valor basado en el resultado de un cálculo u otra operación. Microsoft Access cuenta con numerosas funciones incorporadas, como por ejemplo las siguientes:

•	La función Fecha (Date) devuelve la fecha actual.

•	La función Suma (Sum) devuelve la suma de un conjunto de valores de campos.

•	La función DBúsq (DLookup) devuelve el valor de un campo específico.

También puede crear sus propias funciones con Visual Basic.

•	Un identificador hace referencia al valor de un campo, de un control o de una propiedad. Por ejemplo, el identificador siguiente hace referencia a la propiedad ValorPredeterminado (DefaultValue) del control FechaPedido del formulario Pedidos:

Formularios![Pedidos]![FechaPedido].ValorPredeterminado

Puede combinar el valor de un campo, control o propiedad con una cadena literal utilizando el operador de concatenación &. Por ejemplo, la siguiente expresión combina la cadena literal "[IdCategoría] = " con el valor del control IdCategoría del formulario Productos:

"[IdCategoría] = " & Formularios![Productos]![IdCategoría]

En algunas circunstancias (por ejemplo, en las funciones agregadas de dominio, como DBúsq (DLookup)) el valor del campo, control o propiedad debe indicarse entre comillas simples (') o dobles ("). La forma más sencilla de hacerlo es agregar una comilla simple a la cadena literal y luego combinar la expresión con otra cadena literal formada por una comilla sencilla tras el valor del campo, control o propiedad, de la siguiente manera:

"[IdCategoría] = ' " & Formularios![Productos]![IdCategoría] & " ' "

Es posible que las aplicaciones para Microsoft Access ya existentes utilicen operadores barra vertical (| |) en lugar de la combinación que abre y cierra comillas dobles y operadores & de esta forma:

"[IdCategoría] = '|Formularios![Productos]![IdCategoría]|' "

Sin embargo, no es recomendable utilizar barras verticales, pues pueden producir resultados inesperados en algunas circunstancias.

Si desea que una expresión produzca una cadena entre comillas dobles, puede indicar la cadena anidada entre comillas sencillas o con tres pares de comillas dobles. Por ejemplo, las expresiones siguientes son equivalentes:

Formularios![Contactos]![Ciudad].ValorPredeterminado = ' "París" '

Formularios![Contactos]![Ciudad].ValorPredeterminado = " " "París" " "

Para obtener más información acerca de las constantes, haga clic en  [image].

Para obtener más información acerca de la forma de crear sus propias funciones, haga clic en  [image].

Para obtener más información acerca del uso de identificadores en las expresiones, haga clic en  [image].


Ejemplos de expresiones

Las expresiones se utilizan en muchas operaciones de Microsoft Access, como la creación de controles calculados, criterios de consultas y filtros, valores predeterminados, reglas de validación y condiciones de macros. A menudo, la forma más sencilla de crear una expresión es encontrar un ejemplo similar a la expresión deseada y modificarlo para que produzca el resultado deseado.

¿Qué ejemplos desea ver?

Ejemplos de expresiones utilizadas en formularios e informes

Ejemplos de expresiones utilizadas en consultas y filtros

Ejemplos de expresiones con valores predeterminados

Ejemplos de expresiones de reglas de validación de campos

Ejemplos de expresiones de condiciones de macro

Leer más sobre qué son las expresiones


Usar los operadores !  y .  (punto) en las expresiones

Puede utilizar los operadores !  y .  (punto) en un identificador para indicar el tipo de elemento que va inmediatamente a continuación.

El operador ! indica que el elemento siguiente ha sido definido por el usuario (un elemento de una colección). Por ejemplo, puede usar el operador ! para hacer referencia a un formulario abierto, a un informe abierto o a un control de un formulario o informe abierto.

Identificador	Hace referencia a
Formularios![Pedidos]	El formulario abierto Pedidos
Informes![Factura]	El informe abierto Factura
Formularios![Pedidos]![IdPedido]	El control IdPedido del formulario abierto Pedidos
Normalmente, el operador . (punto) indica que lo que sigue es un elemento definido por Microsoft Access. Por ejemplo, puede usar el operador . (punto) para hacer referencia a una propiedad de un formulario, informe o control.

Nota   También puede usar el operador . (punto) para hacer referencia al valor de un campo en una instrucción SQL, en un método de Visual Basic para aplicaciones o en una colección. Por ejemplo, el identificador Formularios![Pedidos].Controles hace referencia a la colección Controles del formulario Pedidos. Sin embargo, debido a que Controles es la colección predeterminada de los formularios e informes, normalmente no es necesario hacer referencia a ella explícitamente.


Introducir expresiones en una hoja de propiedades, en la cuadrícula de diseño o en un argumento de acción

Si va a introducir una expresión más larga que el área de escritura estándar de una hoja de propiedades, de la cuadrícula de diseño o de un argumento de acción, puede escribirla en el cuadro Zoom. Para abrir el cuadro Zoom, presione MAYÚSCULAS+F2 cuando el enfoque se encuentre en el lugar donde desea introducir la expresión.

Al introducir una expresión en una hoja de propiedades, en la cuadrícula de diseño o en un argumento de acción, Microsoft Access:

•	Reconoce los nombres de funciones, propiedades y separadores de lista específicos de cada región para las versiones internacionales.

•	Inserta determinados caracteres cuando cambia el enfoque. Dependiendo del lugar donde se introduce la expresión, Microsoft Access inserta automáticamente los caracteres siguientes:

•	Corchetes ([ ]) que incluyen los nombres de formularios, informes, campos o controles.

•	Símbolos (#) que incluyen las fechas.

•	Comillas dobles (") que incluyen el texto.

Nota   Las expresiones de los controles calculados siempre van precedidas de un signo de igualdad (=).

Usar las funciones y propiedades en las versiones internacionales de Microsoft Access

Al incluir en una expresión una función o propiedad, en la mayoría de las versiones internacionales de Microsoft Access:

•	Puede escribir su nombre localizado (en su idioma) en una hoja de propiedades, en la cuadrícula de diseño o en argumento de acción.

•	Puede usar el separador de listas de su país al especificar más de un argumento para una función. El separador de listas se especifica en la ficha Número del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. En la mayoría de las versiones internacionales, el separador de listas predeterminado es el carácter punto y coma (;).

Sin embargo, en el código de Visual Basic para aplicaciones, es necesario escribir el nombre de la función o propiedad en inglés, y usar la coma (,) como separador en las listas.

Escribir nombres de objetos

Los corchetes ([ ]) en torno a un campo, control o propiedad en un identificador indican que el elemento es el nombre de una tabla, consulta, formulario, informe, campo o control.

Al escribir el nombre de un objeto en un identificador, debe hacerlo entre corchetes cuando contenga un espacio o un carácter especial, como el subrayado (_). Si el nombre no contiene espacios ni caracteres especiales, puede escribirlo sin corchetes. Microsoft Access inserta los corchetes automáticamente (con las dos excepciones indicadas más abajo).

Por ejemplo, puede escribir la expresión siguiente como valor de la propiedad OrigenDelControl (ControlSource) para calcular la suma de los valores de los campos Transporte e ImportePedido:

= Transporte + ImportePedido

Microsoft Access mostrará la expresión de la siguiente manera:

= [Transporte] + [ImportePedido]

Nota   En el valor de una propiedad ReglaDeValidación (ValidationRule) o en la celda Criterios de la cuadrícula de diseño de una consulta, Microsoft Access no inserta siempre automáticamente corchetes en torno a los nombres. Si especifica el nombre de un objeto, asegúrese de incluir los corchetes. En caso contrario, Microsoft Access puede suponer que se trata de texto e insertar comillas dobles.

Escribir valores de fecha/hora

Los símbolos (#) que incluyen un elemento de una expresión indican que se trata de un valor de fecha/hora. Microsoft Access evalúa automáticamente los valores indicados entre símbolos (#) como fecha/hora y permite escribirlos en cualquier formato común de fecha u hora.

No es necesario que escriba los símbolos (#) que incluyen los valores de fecha/hora en las expresiones de validación o de criterio basadas en campos cuyo tipo de datos sea Fecha/Hora. Puede escribir el valor en cualquier formato común de fecha u hora y Microsoft Access insertará automáticamente estos símbolos.

Microsoft Access muestra el valor según la configuración del cuadro de diálogo Propiedades de Configuración regional del Panel de control de Windows. Puede cambiar el formato de salida de una fecha mediante la propiedad Formato (Format).

Escribir texto

Las comillas dobles que incluyen un elemento de una expresión indican que se trata de texto.

Al escribir texto en una expresión de validación o de criterio, puede hacerlo sin indicar las comillas dobles. Microsoft Access las insertará automáticamente.

Por ejemplo, si escribe la expresión París, Microsoft Access la mostrará como sigue:

"París"


Hacer referencia a un formulario, informe, subformulario o subinforme en una expresión

Para hacer referencia a un formulario o informe abierto, o al subformulario o subinforme de un formulario o informe abierto, en una expresión, escriba su identificador.

Para hacer referencia a un formulario o informe abierto

•	Escriba el nombre de la colección Formularios o Informes seguido del operador ! y del nombre del formulario o informe. Por ejemplo, el identificador siguiente hace referencia al formulario Pedidos:

Formularios![Pedidos]

Para hacer referencia a un subformulario o subinforme

Para hacer referencia al control subformulario o subinforme del formulario o informe que lo contiene, utilice la propiedad Formulario (Form) o Informe (Report) del control para designar al subformulario o subinforme.

•	Escriba el identificador del formulario que contiene el subformulario seguido del nombre del control subformulario, el operador .  (punto) y la propiedad Formulario (Form). Por ejemplo, el identificador siguiente hace referencia al subformulario Subformulario Pedidos del formulario Pedidos:

Formularios![Pedidos]![Subformulario Pedidos].Form

Notas

•	Puede utilizar el Generador de expresiones para crear un identificador de un formulario, informe, subformulario o subinforme.

•	Al ejecutar una macro o código de Visual Basic para aplicaciones que contenga una expresión que se refiera a un formulario o informe, éste deberá estar abierto.

Para obtener más información acerca de la forma de crear una expresión con el Generador de expresiones, haga clic en  [image].

Para obtener más información acerca del uso de identificadores en las expresiones, haga clic en  [image].

Para obtener más información acerca de cómo hacer referencia al valor de un control o propiedad en una expresión, haga clic en  [image].


Hacer referencia al valor de un control o de una propiedad en una expresión

Para hacer referencia al valor de un control o de una propiedad en una expresión, escriba su identificador.

Para hacer referencia al valor de un control

•	Escriba el identificador del formulario o informe que contenga el control, seguido del operador ! y del nombre del control. Por ejemplo, el identificador siguiente hace referencia al valor del control IdPedido del formulario Pedidos:

Formularios![Pedidos]![IdPedido]

Sugerencia   Al hacer referencia a un control de un subformulario o subinforme, no es necesario que especifique el identificador completo del formulario informe con la propiedad Formulario (Form) o Informe (Report). Por ejemplo, puede usar el identificador siguiente para hacer referencia al control Cantidad del subformulario Subformulario Pedidos:

Formularios![Pedidos]![Subformulario Pedidos]![Cantidad]

Para hacer referencia al valor de una propiedad

•	Escriba el identificador del formulario, informe o control al que se aplique la propiedad, seguido del operador .  (punto) y del nombre de la propiedad. Por ejemplo, el identificador siguiente hace referencia a la propiedad ValorPredeterminado (DefaultValue) del control FechaPedido del formulario Pedidos:

Formularios![Pedidos]![FechaPedido].ValorPredeterminado

Notas

•	Puede usar el Generador de expresiones para crear el identificador de un control o propiedad.

•	Al ejecutar una macro o código de Visual Basic para aplicaciones que contengan una expresión que se refiera a un formulario o informe, éste deberá estar abierto.

Para obtener más información acerca de la forma de crear una expresión con el Generador de expresiones, haga clic en  [image].

Para obtener más información acerca del uso de identificadores en las expresiones, haga clic en  [image].

Para obtener más información acerca del uso de valores en las expresiones, haga clic en  [image].

Para obtener más información acerca de la forma de hacer referencia a un formulario, informe, subformulario o subinforme en una expresión, haga clic en  [image].


Hacer referencia a una sección de un informe o formulario o a un nivel de grupo de informes en una expresión

•	Escriba el identificador del formulario o informe seguido del operador . (punto) y del nombre de la sección o nivel de grupo. Por ejemplo, el identificador siguiente hace referencia a la sección Detalles del formulario Pedidos:

[Formularios]![Pedidos].Detalles

Nota

•	Al ejecutar una macro o código de Visual Basic para aplicaciones que contengan una expresión que se refiera a un formulario o informe, éste deberá estar abierto.

•	También puede hacer referencia a secciones de formularios o informes o a niveles de grupo de informes por su número de índice mediante la propiedad Sección (Section). Para obtener más información acerca de la propiedad Sección (Section), haga clic en  [image].

Para obtener más información acerca del uso de los identificadores en las expresiones, haga clic en  [image].


Hacer referencia a una columna de una lista en una expresión

Puede hacer referencia a una columna de un control cuadro de lista o cuadro combinado que tenga varias columnas mediante su propiedad Columna (Columna).

•	Escriba el identificador de la propiedad Columna (Columna), seguido del número de índice de la columna entre paréntesis. Especifique 0 para la primera columna, 1 para la segunda, y así sucesivamente. Por ejemplo, el identificador siguiente hace referencia a la segunda columna del control cuadro de lista País del formulario Clientes:

[Formularios]![Clientes]![País].[Columna](1)

Nota   Al ejecutar una macro o código de Visual Basic para aplicaciones que contengan una expresión que se refiera a un formulario o informe, éste deberá estar abierto.

Para obtener más información acerca de la forma de crear un cuadro de lista o combinado con varias columnas, haga clic en  [image].

Para obtener más información acerca de la forma de hacer referencia al valor de un control o propiedad en una expresión, haga clic en  [image].


Reglas para dar nombre a los campos, controles y objetos

En Microsoft Access, los nombres de los campos, controles y objetos:

•	Pueden tener hasta 64 caracteres.

•	Pueden incluir cualquier combinación de letras, números, espacios y caracteres especiales, excepto el punto (.), el signo de admiración (!), el acento grave y los corchetes ([ ]).

•	No pueden comenzar por un espacio en blanco.

•	No pueden contener caracteres de control (valores ASCII de 0 a 31).

Aunque es posible incluir espacios en los nombres de los campos, controles y objetos, en la mayoría de los ejemplos de la documentación de Microsoft Access los nombres de los campos y controles aparecen sin espacios. En determinadas circunstancias, los nombres con espacios pueden producir conflictos en Visual Basic para aplicaciones.

Al dar nombre a un campo, control u objeto, es recomendable asegurarse de que no coincida con el nombre de una propiedad u otro elemento que utilice Microsoft Access. De lo contrario, la base de datos puede tener un comportamiento inesperado en algunas circunstancias. Por ejemplo, al hacer referencia al valor de un campo llamado Nombre de la tabla InfoNombre con la sintaxis InfoNombre.Nombre, Microsoft Access mostrará el valor de la propiedad Nombre (Name) de la tabla, en lugar del valor del campo Nombre.

Otra forma de evitar resultados inesperados es utilizar siempre el operador ! en lugar del operador . (punto) para hacer referencia al valor de un campo, control u objeto. Por ejemplo, el siguiente identificador hace referencia explícitamente al valor del campo Nombre, y no al de la propiedad Nombre (Name):

[InfoNombre]![Nombre]

Para obtener más información acerca del uso de los operadores !  y .  (punto) en las expresiones, haga clic en  [image].


Reglas para dar nombre a los procedimientos, variables y constantes de Visual Basic

Los nombres de procedimientos, variables y constantes del código de Visual Basic para aplicaciones:

•	Pueden tener hasta 255 caracteres.

•	Deben comenzar por una letra.

•	Pueden contener letras, números o caracteres de subrayado (_).

•	No pueden contener signos de puntuación ni espacios.

•	No pueden coincidir con una palabra clave de Visual Basic.

Una palabra clave es una cadena que Visual Basic utiliza como parte de su lenguaje. Son palabras clave las instrucciones predefinidas (como If y Loop), las funciones (como Len y Abs) y los operadores (como Or y Mod).


 Acerca del Generador de expresiones

El Generador de expresiones consta de tres secciones:

•	En la sección superior del generador se encuentra un cuadro en el que se genera la expresión. Utilice la sección inferior para crear los elementos de la expresión, y luego insértelos en el cuadro para formarla. También puede escribir componentes de la expresión directamente en este cuadro.

•	En la sección intermedia del generador hay botones que corresponden a los operadores más comunes. Al hacer clic en uno de ellos, el Generador de expresiones insertará el operador en el lugar del cuadro de expresiones donde se encuentre el punto de inserción. Si desea consultar una lista completa de los operadores que se pueden emplear en expresiones, haga clic en la carpeta Operadores situada en el cuadro inferior izquierdo, y en la categoría de operadores que corresponda en el cuadro intermedio. En el cuadro de la derecha aparecerán todos los operadores de la categoría seleccionada.

•	En la sección inferior del generador hay tres cuadros:

•	El cuadro situado a la izquierda contiene carpetas que muestran los objetos tabla, consulta, formulario e informe de la base de datos, las funciones incorporadas y las definidas por el usuario, las constantes, los operadores y las expresiones comunes.

•	El cuadro intermedio muestra los elementos específicos o las categorías de elementos que corresponden a la carpeta seleccionada en el cuadro de la izquierda. Por ejemplo, al hacer clic en Funciones incorporadas en el cuadro de la izquierda, en el cuadro intermedio aparecen las categorías de funciones de Microsoft Access.

•	En el cuadro de la derecha aparecen los valores que corresponden a los elementos seleccionados en los cuadros izquierdo e intermedio. Por ejemplo, al hacer clic en Funciones incorporadas en el cuadro de la izquierda y una categoría de funciones en el cuadro intermedio, en el cuadro de la derecha aparecerán todas las funciones incorporadas de la categoría seleccionada.

Notas

•	Para ver los nombres de los campos nuevos en el Generador de expresiones, primero es necesario guardar la tabla o consulta que contiene tales campos.

•	Si un objeto o una función no aparece en la sección inferior del Generador de expresiones, no es válido en el contexto en que se ha iniciado el generador. Por ejemplo, no es posible hacer referencia a otros campos y controles en la regla de validación de un campo en la vista Diseño de la tabla, por lo que las carpetas Tablas, Consultas, Formularios e Informes no estarán disponibles cuando se inicie el Generador de expresiones desde la propiedad ReglaDeValidación (ValidationRule) de un campo en la vista Diseño de tabla.

•	Al insertar un identificador en la expresión, el Generador de expresiones sólo pegará los componentes del mismo que sean necesarios en el contexto actual. Por ejemplo, si inicia el Generador de expresiones desde la hoja de propiedades del formulario Clientes e inserta en la expresión el identificador de la propiedad Visible del formulario, el Generador de expresiones sólo insertará el nombre de la propiedad: Visible. Si utiliza esta expresión fuera del contexto del formulario, deberá especificar el identificador completo: Formularios![Clientes].Visible.


Utilizar el Generador de expresiones

¿Qué desea hacer?

Acerca del Generador de expresiones

Iniciar el Generador de expresiones

Crear una expresión con el Generador de expresiones

Ejemplos de expresiones

Leer más sobre qué son las expresiones


Solución de problemas en las expresiones

¿Sobre qué necesita ayuda?

No comprendo cómo funcionan las expresiones, necesitaría un resumen.

El argumento de criterios en una función DBúsq (DLookup) o cualquier otra función agregada de dominio produce resultados inesperados.

Obtengo resultados inesperados cuando intento combinar (concatenar) valores de controles o campos, variables o textos en una expresión.

Obtengo resultados inesperados cuando intento realizar operaciones en campos cuyos valores están en blanco.

Obtengo resultados inesperados cuando introduzco un valor de fecha en una expresión.

Obtengo resultados inesperados cuando intento hacer referencia a una propiedad o control de un subformulario o subinforme.

Obtengo resultados inesperados cuando intento hacer referencia a una columna de un cuadro de lista o cuadro combinado.

¿Cómo convierto texto de forma que la primera letra esté en mayúsculas y el resto en minúsculas?


Obtengo resultados inesperados cuando intento combinar (concatenar) valores de controles o campos, variables o textos en una expresión

La concatenación de valores de controles o campos o texto en una expresión puede producir resultados inesperados debido a alguna de estas causas:

•	Está haciendo referencia a un control o campo que tiene el mismo nombre que el control actual, creándose una referencia circular. Cambie el nombre del campo o del control.

•	Está haciendo referencia a un control o campo utilizando un nombre que está incorrectamente escrito. Compruebe que lo ha introducido correctamente.

•	Está haciendo referencia a un control o campo que tiene el mismo nombre que una propiedad. Utilice el identificador completo del control o campo. Para obtener más información acerca de los identificadores en expresiones, haga clic aquí  [image].

•	Microsoft Access no está evaluando correctamente la expresión debido a que una parte de la misma debe encerrarse entre corchetes ( [ ) o apóstrofos (') o comillas ("). Compruebe si son necesarios los corchetes o las comillas.

Para obtener más información acerca de cómo concatenar valores en expresiones de texto, haga clic aquí  [image].


Obtengo resultados inesperados cuando intento realizar operaciones en campos cuyos valores están en blanco

Muchas operaciones pueden producir resultados inesperados si utilizan una expresión que hace referencia a un campo que tiene valores en blanco (Null). Por ejemplo, las funciones DCont (DCount) o DSuma (DSum) pueden producir resultados inesperados si utilizan expresiones de criterios que hagan referencia a un campo con valores Null.

Para solucionar este problema, puede:

•	Pasar valores de campo a la función Nz en la expresión. Cuando la función Nz evalúa un valor Null, devuelve cero o una cadena de longitud cero. Para obtener más información acerca de la función Nz, haga clic aquí  [image].

•	Utilice la función SiInm (IIf) y EsNulo (IsNull) para comprobar si es un valor Null y devolver un valor adecuado. Para obtener más información acerca de la función SiInm (IIf), haga clic aquí  [image]. Para obtener más información acerca de la función EsNulo (IsNull), haga clic aquí  [image].

Para obtener más información acerca de cómo establecer propiedades de campo que determinen cómo controlar los campos en blanco, haga clic aquí


Obtengo resultados inesperados cuando introduzco un valor de fecha en una expresión

Microsoft Access puede producir resultados inesperados si se introduce un valor de fecha en una expresión sin encerrarla entre signos #. Para obtener más información acerca de cómo introducir expresiones, haga clic aquí  [image].


Obtengo resultados inesperados cuando intento hacer referencia a una propiedad o control de un subformulario o subinforme

Microsoft Access puede producir resultados inesperados si se hace referencia a una propiedad o control de un subformulario o subinforme utilizando un identificador incorrecto.

Para hacer referencia a una propiedad de un subformulario o subinforme, debe escribir un identificador completo para el formulario o informe utilizando la propiedad Formulario (Form) o Informe (Report) de un control subformulario o subinforme. Por ejemplo, el identificador siguiente hace referencia a la propiedad Visible del subformulario Subformulario pedidos:

Forms![Pedidos]![ControlSubformularioPedidos].Form.Visible

En este ejemplo:

•	Formularios![Pedidos]![ControlSubformularioPedidos] hace referencia al control subformulario que contiene al subformulario.

•	Formularios![Pedidos]![ControlSubformularioPedidos].Form hace referencia al propio subformulario. Debe especificar la propiedad Formulario (Form) para hacer referencia al propio subformulario o a una de sus propiedades.

Por el contrario, para hacer referencia a un control de un subformulario o subinforme o a una de las propiedades del control, no necesita utilizar la propiedad Formulario (Form) o Informe (Report). Por ejemplo, el identificador siguiente hace referencia a la propiedad Visible del control Descuento del subformulario Subformulario pedidos:

Formularios![Pedidos]![ControlSubformularioPedidos]![Descuento].Visible

Para obtener más información acerca de cómo hacer referencia a un formulario, informe, subformulario o subinforme en una expresión, haga clic aquí  [image].

Para obtener más información acerca de cómo hacer referencia al valor de un control o propiedad en una expresión, haga clic aquí  [image].

Para obtener más información acerca de los identificadores en expresiones, haga clic aquí  [image].


Obtengo resultados inesperados cuando intento hacer referencia a una columna de un cuadro de lista o cuadro combinado

Utilice la propiedad Columna (Column) para hacer referencia a una columna de un cuadro de lista o cuadro combinado. La propiedad Columna (Column) puede producir resultados inesperados debido a alguna de estas causas:

•	No ha indicado un número de orden a la propiedad Columna (Column). El número de orden identifica la columna a la que se está haciendo referencia. Por ejemplo, Columna(0) hace referencia a la primera columna de un cuadro de lista o cuadro combinado.

•	Ha especificado un número para la columna equivocada. Recuerde que los números de orden de la propiedad Columna (Column) comienzan a partir del cero. Columna(0) hace referencia a la primera columna, Columna(1) a la segunda, etc.

•	Está realizando un cálculo numérico directamente con el valor devuelto por la propiedad Columna (Column). Debido a que la propiedad Columna (Column) devuelve un valor de texto, debe convertirlo a un valor numérico antes de realizar un cálculo numérico. Por ejemplo, la expresión siguiente utiliza la función CMoneda (CCur) para convertir el valor devuelto por la propiedad Columna (Column) a un valor de moneda antes de multiplicarlo por el valor del campo Cantidad:

 [Cantidad] * CMoneda([CuadroListaPrecios].Columna(1))

Para obtener más información acerca de cómo hacer referencia a una columna de una lista, haga clic aquí  [image].


¿Cómo convierto texto de forma que la primera letra esté en mayúsculas y el resto en minúsculas?

Puede convertir texto de forma que la primera letra esté en mayúsculas y el resto en minúsculas utilizando la función ConvCadena (StrConv).


Usar las teclas de método abreviado de Microsoft Access

Puede usar teclas de método abreviado (también llamadas teclas aceleradoras) para tener acceso de forma rápida a comandos u operaciones de uso frecuente. Los temas siguientes describen teclas de método abreviado disponibles en todos los productos Microsoft Office y aquéllas que son específicas de Microsoft Access.

¿Qué desea hacer?

Usar las teclas de método abreviado globales de los menús

Usar las teclas de método abreviado globales de las barras de herramientas

Usar las teclas de método abreviado globales de las ventanas y los cuadros de diálogo

Usar las teclas de método abreviado globales del Ayudante de Office

Usar las teclas de método abreviado globales de Microsoft Access

Usar las teclas de método abreviado de la ventana Base de datos

Usar las teclas de método abreviado para seleccionar texto o datos

Usar las teclas de método abreviado para modificar texto o datos

Usar las teclas de método abreviado para desplazarse en la vista Hoja de datos

Usar las teclas de método abreviado para desplazarse en la vista Formulario

Usar las teclas de método abreviado en la Vista preliminar y en la Vista previa del diseño

Usar las teclas de método abreviado de las ventanas Módulo y Depuración


Usar las teclas de método abreviado globales de Microsoft Access

Al mostrar ayuda	Presione
Para mostrar el Ayudante de Office, el Contenido e índice de Microsoft Access, ayuda contextual acerca de la propiedad, control, acción de macro o palabra clave de Visual Basic seleccionada, o alertas con un botón Ayuda.	F1
Para mostrar ayuda Qué es esto; después de presionar MAYÚS+F1, sitúe el puntero sobre el comando de menú, el botón de barra de herramientas, la opción de cuadro de diálogo o la región de la pantalla y a continuación	MAYÚS+F1
Al abrir bases de datos	Presione
Para abrir una base de datos nueva	CTRL+N
Para abrir una base de datos existente	CTRL+O
Al abrir y guardar	Presione
Para imprimir el objeto actual o seleccionado	CTRL+P
Para guardar un objeto de base de datos	CTRL+S o MAYÚS+F12 o ALT+MAYÚS+F2
Para abrir el cuadro de diálogo Guardar como	F12 o ALT+F2
Al usar un cuadro combinado o un cuadro de lista	Presione
Para abrir un cuadro combinado	F4 o  ALT+FLECHA ABAJO
Para actualizar el contenido de un cuadro de lista o cuadro combinado con campos de Búsqueda	F9
Para avanzar una línea	FLECHA ABAJO
Para avanzar una página	AVANZAR PÁGINA
Para retroceder una línea	FLECHA ARRIBA
Para retroceder una página	RETROCEDER PÁGINA
Para salir del cuadro combinado o el cuadro de lista	TAB
Al buscar y reemplazar texto o datos	Presione
Para abrir el cuadro de diálogo Buscar (vista Hoja de datos, vista Formulario y ventana Módulo exclusivamente)	CTRL+F
Para abrir el cuadro de diálogo Reemplazar (vista Hoja de datos, vista Formulario y ventana Módulo exclusivamente)	CTRL+H
Para encontrar la siguiente aparición del texto especificado en el cuadro de diálogo Buscar o Reemplazar cuando el cuadro de diálogo está cerrado (vista Hoja de datos y vista Formulario exclusivamente)	MAYÚS+F4
Al trabajar en la vista Diseño	Presione
Para cambiar entre el modo de Edición (con el punto de inserción mostrado) y el modo Desplazamiento	F2
Para seleccionar un formulario o un informe	CTRL+R
Para cambiar a la vista Formulario desde el diseño de un formulario o un módulo de formulario	F5
Para cambiar entre las partes superior e inferior de una ventana (vista Diseño de tablas, macros y consultas y ventana Filtro u orden avanzado exclusivamente)	F6
Para agregar un control a una sección (vista Diseño del formulario o el informe exclusivamente). Para obtener más información, haga clic en	MAYÚS+ENTRAR
Operaciones con ventanas	Presione
Para traer la ventana Base de datos al frente	F11 o ALT+F1
Para alternar entre las ventanas abiertas	CTRL+F6
Para restaurar la ventana minimizada seleccionada cuando todas las ventanas están minimizadas	ENTRAR
Para mostrar el menú Control	ALT+BARRA ESPACIADORA
Para cerrar la ventana activa	CTRL+W o CTRL+F4
Varios	Presione
Para mostrar la dirección de hipervínculo completa de un hipervínculo seleccionado	F2
Para revisar la ortografía	F7
Para abrir el cuadro Zoom con el fin de introducir cómodamente expresiones y otro texto en áreas de entrada de datos pequeñas	MAYÚS+F2
Para mostrar una hoja de propiedades	ALT+ENTRAR
Para salir de Microsoft Access, cerrar un cuadro de diálogo o cerrar una hoja de propiedades	ALT+F4
Para ejecutar un Generador	CTRL+F2
Para alternar entre una barra de menús personalizada y una barra de menús  incorporada	CTRL+F11


Usar las teclas de método abreviado de la ventana Base de datos

Al modificar y desplazarse por una lista de objetos	Presione
Para cambiar el nombre de un objeto seleccionado	F2
Para avanzar una línea	FLECHA ABAJO
Para avanzar una ventana	AVANZAR PÁGINA
Para avanzar hasta el último objeto	FIN
Para retroceder una línea	FLECHA ARRIBA
Para retroceder una ventana	RETROCEDER PÁGINA
Para retroceder hasta el primer objeto	INICIO
Al desplazarse y abrir objetos	Presione
Para recorrer la ficha del tipo de cada objeto	CTRL+TAB
Para recorrer la ficha del tipo de cada objeto de derecha a izquierda	MAYÚS+CTRL+TAB
Para abrir la tabla o la consulta seleccionada en la vista Hoja de datos, o el formulario en la vista Formulario	ENTRAR
Para abrir el informe seleccionado en la Vista preliminar	ENTRAR
Para ejecutar la macro seleccionada	ENTRAR
Para abrir la tabla, consulta, formulario, informe, macro o módulo seleccionado en la vista Diseño	CTRL+ENTRAR o ALT+D


Usar las teclas de método abreviado para seleccionar texto o datos

Al seleccionar texto en un campo	Presione
Para ampliar la selección un carácter a la derecha	MAYÚS+FLECHA DERECHA
Para ampliar la selección una palabra a la derecha	CTRL+MAYÚS+FLECHA DERECHA
Para ampliar la selección un carácter a la izquierda	MAYÚS+FLECHA IZQUIERDA
Para ampliar la selección una palabra a la izquierda	CTRL+MAYÚS+FLECHA IZQUIERDA
Nota   Para cancelar una selección, utilice la tecla de flecha opuesta.

Al seleccionar un campo o un registro	Presione
Para seleccionar el campo siguiente	TAB
Para cambiar entre el modo de Edición (con el punto de inserción mostrado) y el modo Desplazamiento	F2
Para cambiar entre seleccionar el registro actual y el primer campo del registro actual en el modo Desplazamiento	MAYÚS+BARRA ESPACIADORA
Para ampliar la selección al registro anterior, si el registro actual está seleccionado	MAYÚS+FLECHA ARRIBA
Para ampliar la selección al registro siguiente, si el registro actual está seleccionado	MAYÚS+FLECHA ABAJO
Para seleccionar todos los registros	CTRL+A o CTRL+MAYÚS+BARRA ESPACIADORA
Para obtener más información acerca de cómo seleccionar campos o registros, haga clic en

Al ampliar una selección	Presione
Para activar el modo de Extensión (EXT aparece en la esquina inferior derecha de la ventana); al presionar F8 varias veces se amplía la selección a la palabra, el campo, el registro (en la vista Hoja de datos exclusivamente) y todos los registros	F8
Para ampliar una selección a campos adyacentes en la misma fila en la vista Hoja de datos	FLECHA IZQUIERDA o FLECHA DERECHA
Para ampliar una selección a filas adyacentes en la vista Hoja de datos	FLECHA ARRIBA, FLECHA ABAJO
Para deshacer la extensión anterior	MAYÚS+F8
Para cancelar el modo de Extensión	ESC
Al seleccionar una columna en la vista Hoja de datos	Presione
Para seleccionar la columna actual o cancelar la selección de la columna, en el modo Desplazamiento exclusivamente	CTRL+BARRA ESPACIADORA
Para seleccionar la columna situada a la derecha, si está seleccionada la columna actual	FLECHA DERECHA
Para seleccionar la columna situada a la izquierda, si está seleccionada la columna actual	FLECHA IZQUIERDA


Usar las teclas de método abreviado para modificar texto o datos

Nota:   Si el punto de inserción no está visible, presione F2 para mostrarlo.

Al mover el punto de inserción en un campo	Presione
Para moverlo un carácter a la derecha	FLECHA DERECHA
Para moverlo una palabra a la derecha	CTRL+FLECHA DERECHA
Para moverlo un carácter a la izquierda	FLECHA IZQUIERDA
Para moverlo una palabra a la izquierda	CTRL+FLECHA IZQUIERDA
Para moverlo al final del campo, en los campos de una sola línea	FIN
Para moverlo al final del campo, en los campos de varias líneas	CTRL+FIN
Para moverlo al principio del campo, en los campos de una sola línea	INICIO
Para moverlo al principio del campo en los campos de varias líneas	CTRL+INICIO
Al copiar, mover o eliminar texto	Presione
Para copiar la selección al Portapapeles	CTRL+C
Para cortar la selección y copiarla al Portapapeles	CTRL+X
Para pegar el contenido del Portapapeles en el punto de inserción	CTRL+V
Para eliminar la selección o el carácter situado a la izquierda del punto de inserción	RETROCESO
Para eliminar la selección o el carácter situado a la derecha del punto de inserción	SUPR
Al deshacer cambios	Presione
Para deshacer la escritura	CTRL+Z o ALT+RETROCESO
Para deshacer cambios realizados en el campo actual o en el registro actual; si ambos han cambiado, presione ESC dos veces para deshacer primero los cambios del campo actual y, a continuación, los del registro actual	ESC
Al introducir datos en la vista Hoja de datos o Formulario	Presione
Para insertar la fecha actual	CTRL+PUNTO Y COMA (;)
Para insertar la hora actual	CTRL+DOS PUNTOS (:)
Para insertar el valor predeterminado para un campo	CTRL+ALT+BARRA ESPACIADORA
Para insertar el valor del mismo campo del registro anterior	CTRL+APÓSTROFO (')
Para agregar un registro nuevo	CTRL+SIGNO MÁS (+)
Para eliminar el registro actual	CTRL+SIGNO MENOS (-)
Para guardar los cambios realizados en el registro actual	MAYÚS+ENTRAR
Para cambiar entre los valores de una casilla de verificación o un botón de opción	BARRA ESPACIADORA
Para insertar una nueva línea	CTRL+ENTRAR
Al actualizar campos con datos actuales	Presione
Para volver a calcular los campos de la ventana	F9
Para volver a consultar las tablas base; en un subformulario, se vuelve a consultar la tabla base del formulario exclusivamente	MAYÚS+F9
Para actualizar el contenido de un cuadro de lista o cuadro combinado con campos de Búsqueda	F9


Usar las teclas de método abreviado para desplazarse en la vista Hoja de datos

Al ir a un registro específico	Presione
Para moverse al cuadro de número de registro; a continuación, escriba el número de registro y presione ENTRAR	F5
Al desplazarse entre campos y registros	Presione
Para moverse al campo siguiente	TAB, ENTRAR o  FLECHA DERECHA
Para moverse al último campo del registro actual, en el modo Desplazamiento	FIN
Para moverse al campo anterior	MAYÚS+TAB o  FLECHA IZQUIERDA
Para moverse al primer campo del registro actual en el modo Desplazamiento	INICIO
Para moverse al campo actual del registro siguiente	FLECHA ABAJO
Para moverse al campo actual del último registro en el modo Desplazamiento	CTRL+FLECHA ABAJO
Para moverse al último campo del último registro en el modo Desplazamiento	CTRL+FIN
Para moverse al campo actual del registro anterior	FLECHA ARRIBA
Para moverse al campo actual del primer registro en el modo Desplazamiento	CTRL+FLECHA ARRIBA
Para moverse al primer campo del primer registro en el modo Desplazamiento	CTRL+INICIO
Al desplazarse a otra pantalla de datos	Presione
Para avanzar una pantalla	AVANZAR PÁGINA
Para retroceder una pantalla	RETROCEDER PÁGINA
Para avanzar una pantalla hacia la derecha	CTRL+AVANZAR PÁGINA
Para avanzar una pantalla hacia la izquierda	CTRL+RETROCEDER PÁGINA
Al mover columnas	Presione
Para activar el modo Desplazamiento (MOV aparece en la esquina inferior derecha de la pantalla)	CTRL+F8
Para mover la columna seleccionada a la derecha una columna en el modo Desplazamiento	FLECHA DERECHA
Para mover la columna seleccionada a la izquierda una columna en el modo Desplazamiento	FLECHA IZQUIERDA
Para desactivar el modo Desplazamiento	ESC
Para obtener más información acerca de cómo cambiar el orden de las columnas, haga clic en  [image].


Usar las teclas de método abreviado para desplazarse en la vista Formulario

Al ir a un registro específico	Presione
Para moverse al cuadro de número de registro; a continuación, escriba el número de registro y presione ENTRAR	F5
Al desplazarse entre campos y registros	Presione
Para moverse al campo siguiente	TAB
Para moverse al campo anterior	MAYÚS+TAB
Para moverse al último campo del registro actual en el modo Desplazamiento	FIN
Para moverse al último campo del último registro en el modo Desplazamiento	CTRL+FIN
Para moverse al primer campo del registro actual en el modo Desplazamiento	INICIO
Para moverse al primer campo del primer registro en el modo Desplazamiento	CTRL+INICIO
Para moverse al campo actual del siguiente registro	CTRL+AVANZAR PÁGINA
Para moverse al campo actual del registro anterior	CTRL+RETROCEDER PÁGINA
Al desplazarse entre secciones de un registro	Presione
Para recorrer las secciones	F6
Para recorrer las secciones hacia atrás	MAYÚS+F6
Al desplazarse en formularios de más de una página	Presione
Para avanzar una página; al final del registro, desplaza a la página equivalente del siguiente registro	AVANZAR PÁGINA
Para retroceder una página; al final del registro, desplaza a la página equivalente del registro anterior	RETROCEDER PÁGINA
Al desplazarse entre el formulario principal y el subformulario	Presione
Para entrar en el subformulario desde el campo anterior del formulario principal	TAB
Para entrar en el subformulario desde el campo siguiente del formulario principal	MAYÚS+TAB
Para salir del subformulario y desplazarse al campo siguiente del formulario principal o del registro siguiente	CTRL+TAB
Para salir del subformulario y desplazarse al campo anterior del formulario principal o del registro anterior	CTRL+MAYÚS+TAB


Usar las teclas de método abreviado en la Vista preliminar y en la Vista previa del diseño

Operaciones de los cuadros de diálogo y las ventanas	Presione
Para abrir el cuadro de diálogo Imprimir	P o CTRL+P
Para abrir el cuadro de diálogo Configurar página	S
Para ampliar o reducir una parte de la página	Z
Para cancelar la Vista preliminar o la Vista previa del diseño	C o ESC
Al ver páginas diferentes	Presione
Para moverse al cuadro de número de página; a continuación, escriba el número de página y presione ENTRAR	F5
Para ver la página siguiente (cuando Ajustar está seleccionado)	AVANZAR PÁGINA o  FLECHA ABAJO
Para ver la página anterior (cuando Ajustar está seleccionado)	RETROCEDER PÁGINA o FLECHA ARRIBA
Al desplazarse en la Vista preliminar y en la Vista previa del diseño	Presione
Para desplazar hacia abajo en pequeños incrementos	FLECHA ABAJO
Para desplazar hacia abajo una pantalla completa	AVANZAR PÁGINA
Para ir al final de la página	CTRL+FLECHA ABAJO
Para desplazar hacia arriba en pequeños incrementos	FLECHA ARRIBA
Para desplazar hacia arriba una pantalla completa	RETROCEDER PÁGINA
Para ir a la parte superior de la página	CTRL+FLECHA ARRIBA
Para desplazar hacia la derecha en pequeños incrementos	FLECHA DERECHA
Para ir al extremo derecho de la página	FIN o CTRL+FLECHA DERECHA
Para ir a la esquina inferior derecha de la página	CTRL+FIN
Para desplazar hacia la izquierda en pequeños incrementos	FLECHA IZQUIERDA
Para ir al extremo izquierdo de la página	INICIO o CTRL+FLECHA IZQUIERDA
Para ir a la esquina superior izquierda de la página	CTRL+INICIO


Usar las teclas de método abreviado de las ventanas Módulo y Depuración

Al ver código de Visual Basic	Presione
Para mostrar el Examinador de objetos	F2
Para mostrar el cuadro de diálogo Llamadas	CTRL+L
Para ver una definición de procedimiento, variable o palabra clave	MAYÚS+F2
Para regresar a la posición de la última línea en el procedimiento visualizado anteriormente	CTRL+MAYÚS+F2
Para mostrar el procedimiento anterior	CTRL+FLECHA ARRIBA
Para mostrar el procedimiento siguiente	CTRL+FLECHA ABAJO
Para mostrar Ayuda contextual acerca de la palabra clave que contiene el punto de inserción	F1
Para situar el enfoque en el cuadro Objeto	CTRL+F2
Para situar el enfoque en el cuadro Procedimiento	CTRL+F2 (y a continuación presione TAB)
Para enumerar las propiedades y los métodos	CTRL+J
Para enumerar las constantes	CTRL+MAYÚS+J
Para introducir el elemento seleccionado en una lista	CTRL-ENTRAR or TAB
Para introducir el elemento seleccionado y mover el cursor a la línea siguiente	ENTRAR
Para hacer que desaparezca la lista	ESC
Para mostrar información rápida	CTRL+I
Para mostrar información acerca de los parámetros	CTRL+MAYÚS+I
Para completar la palabra clave de Visual Basic	CTRL+BARRA ESPACIADORA
Al editar código de Visual Basic	Presione
Para seleccionar todo el código visible en la ventana Módulo	CTRL+A
Para encontrar la siguiente aparición del texto especificado en el cuadro de diálogo Buscar o Reemplazar cuando está cerrado el cuadro de diálogo	F3
Para encontrar la aparición anterior del texto especificado en el cuadro de diálogo Buscar o Reemplazar cuando está cerrado el cuadro de diálogo	MAYÚS+F3
Para buscar la siguiente aparición del texto seleccionado	CTRL+F3
Para aplicar una sangría a líneas seleccionadas	TAB o CTRL+M
Para quitar una sangría de líneas selecccionadas	MAYÚS+TAB o CTRL+MAYÚS+M
Para cortar la línea actual y copiarla al Portapapeles	CTRL+Y
Al ejecutar y depurar código de Visual Basic	Presione
Para mostrar la ventana Depuración	CTRL+G
Para ejecutar un subprocedimiento sin parámetros que contiene el punto de inserción, desde la ventana Módulo	F5
Para cambiar entre los paneles superior e inferior	F6
Para ir paso a paso por un procedimiento (un solo paso)	F8
Para saltar un procedimiento	MAYÚS+F8
Para salir de un procedimiento	CTRL+MAYÚS+F8
Para ejecutar el código hasta el punto de inserción actual y detener la ejecución	CTRL+F8
Para crear una inspección instantánea para una expresión seleccionada	MAYÚS+F9
Para alternar un punto de interrupción en la línea seleccionada	F9
Para eliminar todos los puntos de interrupción	CTRL+MAYÚS+F9
Para establecer la siguiente instrucción	CTRL+F9
Para detener la ejecución de código o de una macro	CTRL+INTERRUMPIR
Para continuar la ejecución de código o de una macro	F5
Para restablecer la ejecución de código o de una macro	MAYÚS+F5
Para alternar entre interrupción y no interrupción en errores no tratados y a continuación pasar a la siguiente instrucción	ALT+F5
Para alternar entre interrupción y no interrupción en un módulo de clase y a continuación seguir la ejecución	ALT+F8


Acerca del Value Pack de Office 97

Si instala Microsoft Access desde el CD-ROM de Microsoft Office 97 edición Pofessional, además del programa de instalación normal, éste contiene el Value Pack de Office 97. El Value Pack contiene software adicional, tal como controladores, archivos de Ayuda, libros en pantalla y otros programas y archivos que pueden resultar de utilidad.

Para obtener más información acerca del Value Pack, consulte el archivo de Ayuda del Value Pack de Office 97 (Valupk8.hlp) en la carpeta ValuPack de los CD-ROM de Office 97 o de Microsoft Access 97 o en la red desde donde lo instaló. Este archivo de Ayuda contiene información de introducción general e instrucciones de instalación determinadas para cada componente.

Nota    Si la instalación no la hizo desde un CD-ROM, puede obtener el Value Pack desde el World Wide Web seleccionando Microsoft en el Web en el menú Ayuda y luego haciendo clic en Material gratuito.

La siguiente tabla describe alguno de los componentes del Value Pack que son especialmente útiles con Microsoft Access 97.

Componente	Ubicación
Data Access Pak Nota   Contiene tres controladores no disponibles a través del programa de instalación: Lotus 1-2-3, Paradox, y Microsoft Exchange/OutLook	\ValuPack\DataAcc
Versión en pantalla de Creación de aplicaciones con Microsoft Access 97	\ValuPack\Access\Openbook.htm
Archivos de Ayuda para el control ActiveX Explorador de Web (incluido con Microsoft Internet Explorer versión 3.0)	\ValuPack\Access\WebHelp
Microsoft Internet Explorer versión 3.0	\ValuPack\IExplore
Personal Web Server	\ValuPack\PWebSrv
Asistente para publicación en el Web	\ValuPack\WebPost


Eventos: Hacer que los objetos de bases de datos funcionen juntos

Qué es un evento

Un evento es una acción determinada que se produce en, o con, un objeto particular. Microsoft Access puede responder a una variedad de eventos: clics del mouse, cambios en los datos, formularios que se abren o se cierran, y muchos otros. Los eventos son normalmente el resultado de una acción del usuario.

Usando un procedimiento de evento o una macro, se pueden agregar respuestas personalizadas a un evento que se produzca en un formulario, informe, o control.

Suponga que desea que un formulario Detalles de producto se abra cuando haga clic en un botón de comando Detalles de producto en un formulario Pedidos. Los siguientes ejemplos muestran cómo hacer ésto usando un procedimiento de evento o usando una macro.

Responder al evento Al hacer clic usando un procedimiento de evento

Cuando se crea un procedimiento de evento para un objeto, Microsoft Access agrega una plantilla de procedimiento de evento nombrada para el evento y el objeto al módulo de formulario o módulo de informe. Todo lo que necesita hacer es agregar código que responda de la forma que desee cuando se produzca el evento en el formulario o informe.

Responder al evento Al hacer clic usando una macro

Para hacer que se ejecute una macro en respuesta a un evento, abra la hoja de propiedades para el formulario, informe, o control. Busque la propiedad que corresponda al evento, y establézcala a la macro que desee ejecutar.

Para obtener una lista completa de eventos, haga clic en  [image].

Para obtener información acerca de la ejecución de una macro o un procedimiento de evento desde un evento en un formulario, informe, o control, haga clic en  [image].


Macros: Qué son y cómo funcionan

Qué es una macro

Una macro es un conjunto de una o más acciones que cada una realiza una operación determinada, tal como abrir un formulario o imprimir un informe. Las macros pueden ayudar a automatizar las tareas comunes. Por ejemplo, puede ejecutar una macro que imprima un informe cuando el usuario haga clic en un botón de comando.

Una macro puede ser una macro compuesta de una secuencia de acciones, o puede ser un grupo de macros. También se puede usar una expresión condicional para determinar si se llevará a cabo una acción en algunos casos cuando se ejecute la macro.

Una secuencia de acciones

La siguiente macro está compuesta de una serie de acciones. Microsoft Access lleva a cabo estas acciones cada vez que se ejecuta la macro. Para ejecutar esta macro se hace referencia al nombre de la macro Revisar Productos.

Un grupo de macros

Si tiene numerosas macros, agrupar las macros relacionadas en grupos de macros puede ayudar a administrar la base de datos más fácilmente. Para mostrar los nombres de las macros de un grupo de macros, haga clic en Nombres de macros en el menú Ver en la ventana Macro.

Por ejemplo, el siguiente grupo de macros, llamado Botones, está compuesto de tres macros relacionadas: Empleados, Productos, y Representantes. Cada macro lleva a cabo la acción AbrirFormulario, y la macro Productos lleva también a cabo la acción DesplazarTamaño.

El nombre en la columna Nombre de macro identifica a cada macro. Cuando se ejecuta una macro en un grupo de macros, Microsoft Access lleva a cabo la acción de la columna acción y cualquier otra acción que siga inmediatamente, cuya columna Nombre de macro esté en blanco.

Para ejecutar una macro en un grupo de macros, utilice el nombre del grupo de macros seguido de un punto y a continuación el nombre de macro. En el ejemplo anterior, para hacer referencia a la macro Empleados en el grupo de macros Botones, escribiría Botones.Empleados.

Acciones condicionales

Para mostrar la columna Condición, haga clic en Condiciones en el menú Ver en la ventana Macro. La siguiente macro ejecuta las acciones CuadroMsj y DetenerMacro sólo cuando la expresión en la columna Condición sea verdadera (cuando hay un valor Nulo en el campo IdProveedor).

Para obtener información acerca de la creación de una macro, haga clic en  [image]. Para obtener información acerca de la ejecución de una macro, haga clic en  [image].


Módulos: Qué son y cómo funcionan

Qué es un módulo

Un módulo es una colección de declaraciones y procedimientos de Visual Basic para aplicaciones que se almacenan juntos como una unidad.

Hay dos tipos básicos de módulos: los módulos de clases y los módulos estándar. Cada procedimiento en un módulo puede ser un procedimiento Function o un procedimiento Sub.

Módulos de clases

Los módulos de formularios y los módulos de informes son módulos de clases que están asociados con un formulario o informe determinado. Los modulos de formularios y de informes contienen a menudo procedimientos de evento que se ejecutan en respuesta a un evento en un formulario o informe. Puede usar los procedimientos de evento para controlar el comportamiento de los formularios e informes, y sus respuestas a las acciones de los usuarios, tal como hacer clic con el mouse en un botón de comando.

Cuando se crea el primer procedimiento de evento para un formulario o informe, Microsoft Access crea automáticamente un módulo de formulario o un módulo de informe. Para ver el módulo para un formulario o informe, haga clic en Código  [image]  en la barra de herramientas en la vista Diseño de informe o de formulario.

Los procedimientos en los módulos de formularios y de informes pueden llamar a procedimientos que haya agregado a los módulos estándar.

En Microsoft Access 95, los módulos de clase sólo existen en asociación con un formulario o informe. En Microsoft Access 97, los módulos de clase pueden existir también con independencia de un formulario o informe, y este tipo de módulo de clase se enumera en la ficha Módulos de la ventana Base de datos. Puede usar un módulo de clase en la ficha Módulos para crear una definición para un objeto personalizado. Para averiguar más acerca de la programación con estos módulos de clase, haga clic en  [image].

Módulos estándar

Los módulos estándar contienen procedimientos generales que no están asociados con ningún otro objeto y procedimientos usados con frecuencia que pueden ser ejecutados desde cualquier parte de la base de datos.

La lista de módulos estándar de la base de datos se puede ver haciendo clic en la ficha Módulos de la ventana Base de datos. Los formularios, informes y módulos estándar se enumeran también en el Examinador de objetos.

Para obtener más información acerca de los procedimientos, haga clic en  [image].


Ejecutar una macro o un procedimiento de evento para un evento en un formulario, un informe o un control

Microsoft Access responde a muchos tipos de eventos en formularios, informes y controles, incluyendo clics del mouse, cambios en los datos, así como aperturas o cierres de formularios o informes.

1	Abra el formulario o informe en la vista Diseño.

2	Cree una macro o un procedimiento de evento. Así, por ejemplo, puede crear una macro o un procedimiento de evento que muestre un mensaje cuando se haga clic en un botón de comando.

3	Establezca la propiedad de evento del formulario, informe o control apropiada al nombre de la macro o a [Procedimiento de evento] si está utilizando un procedimiento de evento.

Por ejemplo, para utilizar una macro que muestre un mensaje cuando se hace clic en un botón de comando, establezca la propiedad AlHacerClic (OnClick) del botón de comando al nombre de la macro que muestra el mensaje. Para utilizar un procedimiento de evento, cree un procedimiento de evento Click para el botón de comando, y establezca AlHacerClic (OnClick) a [Procedimiento de evento].

Notas

•	Para obtener información sobre cómo crear una macro, haga clic aquí

•	Para obtener información sobre cómo crear un procedimiento de evento, haga clic aquí  [image].

•	Para obtener información sobre cuándo ocurre un evento, haga clic aquí  [image].


Determinar cuándo ocurre un evento

Una sola acción, como puede ser pasar de un control a otro puede desencadenar varios eventos diferentes que suceden en una determinada secuencia. El saber cuándo ocurren los eventos y en qué orden lo hacen es importante, porque esto afecta a cómo y cuándo se ejecutan sus macros o procedimientos de evento. Por ejemplo, si tiene dos procedimientos de evento que deben ejecutarse en un orden determinado, querrá estar seguro de que los eventos con los que están asociados suceden en ese orden.

¿Qué desea hacer?

Ver el orden de los eventos para controles en formularios

Ver el orden de los eventos para registros en formularios

Ver el orden de los eventos para formularios y subformularios

Ver el orden de los eventos para pulsaciones de teclas y clics del mouse

Ver el orden de los eventos para informes y secciones de informes

Nota   Puede ver el orden en que ocurren los eventos en un formulario, abriendo el formulario MostrarEventos en la aplicación de ejemplo Pedidos. Cuando ocurre un evento en el formulario MostrarEventos, por ejemplo, cuando abre el formulario o mueve un registro, el formulario HistorialDeEventos relaciona los eventos en el orden en el cual se producen. Si desea más información acerca de abrir Pedidos, haga clic aquí  [image].


Orden de eventos para controles en formularios

Los eventos ocurren en los controles en formularios, cuando se mueve el enfoque a un control y cuando se modifican y actualizan datos en un control.

Mover el enfoque a un control

Cuando se mueve el enfoque a un control en un formulario (por ejemplo, al abrir un formulario que tenga uno o más controles activos o al moverse a otro control en el mismo formulario) los eventos Enter y GotFocus ocurren en el siguiente orden:

Enter ⇒ GotFocus

Si está abriendo un formulario, estos eventos ocurren después de los eventos asociados con la apertura del formulario (como son Open, Activate y Current), de la siguiente forma:

Open (formulario) ⇒ Activate (formulario) ⇒ Current (formulario) ⇒ Enter (control) ⇒ GotFocus (control)

Cuando el enfoque abandona un control en un formulario (por ejemplo, cuando se cierra un formulario que tiene más de un control activo o se mueve a otro control en el mismo formulario) los eventos Exit y LostFocus ocurren en este orden:

Exit ⇒ LostFocus

Si está cerrando un formulario, los eventos Exit y LostFocus ocurren antes que los eventos asociados con el cierre del formulario (como Unload, Deactivate y Close, de la siguiente forma:

Exit (control) ⇒ LostFocus (control) ⇒ Unload (formulario) ⇒ Deactivate (formulario) ⇒ Close (formulario)

Modificar y actualizar datos en un control

Cuando se introducen o modifican datos en un control de un formulario y a continuación se mueve el enfoque a otro control, ocurren los eventos BeforeUpdate y AfterUpdate:

BeforeUpdate ⇒ AfterUpdate

Los eventos Exit y LostFocus para el control modificado ocurren después de los eventos BeforeUpdate y AfterUpdate:

BeforeUpdate ⇒ AfterUpdate ⇒ Exit ⇒ LostFocus

Cuando se modifica el texto en un cuadro de texto o en la parte de texto de un cuadro combinado, ocurre el evento Change. Este evento ocurre siempre que se modifique el contenido de un control, pero antes de que se mueva a un control o registro diferente (y por lo tanto, antes de que ocurran los eventos BeforeUpdate y AfterUpdate). Cada vez que se presiona una tecla en un cuadro de texto o en la parte de texto de un cuadro combinado ocurre la siguiente secuencia de eventos:

KeyDown ⇒ KeyPress ⇒ Change ⇒ KeyUp

El evento NotInList ocurre después de que introduce un valor en el cuadro combinado que no se encuentra en la lista del cuadro combinado y a continuación trata de moverse a otro control o registro. Ocurre después de los eventos de teclado y de cambiar del cuadro combinado, pero antes que cualquier otro evento de control o de formulario. Si la propiedad LimitarALista (LimitToList) del cuadro combinado está establecida a Sí, el evento Error ocurre inmediatamente después del evento NotInlist:

KeyDown ⇒ KeyPress ⇒ Change ⇒ KeyUp ⇒ NotlnList ⇒ Error

Para obtener más información sobre eventos, haga clic aquí  [image].


Orden de eventos para registros en formularios

Los eventos ocurren en registros en formularios cuando se mueve el enfoque a un registro, se actualizan datos en un registro, se eliminan registros existentes o se crea un nuevo registro.

Mover el enfoque a registros y actualizar datos en registros

Cuando se mueve el enfoque a un registro existente en un formulario, se introducen o cambian datos en un registro y a continuación se mueve el enfoque a otro registro, ocurre la siguiente secuencia de eventos en un formulario:

Current (formulario) ⇒ BeforeUpdate (formulario) ⇒ AfterUpdate (formulario) ⇒ Current (formulario)

Cuando se abandona el registro cuyos datos se han modificado, pero antes de pasar al siguiente registro, ocurren los eventos Exit y LostFocus para el control con el enfoque. Estos eventos ocurren después de los eventos BeforeUpdate y AfterUpdate para el formulario, de la forma siguiente:

BeforeUpdate (formulario) ⇒ AfterUpdate (formulario) ⇒ Exit (control) ⇒ LostFocus (control) ⇒ Current (formulario)

Según va moviendo el enfoque entre los controles en un formulario, van ocurriendo eventos en cada control. Por ejemplo, la siguiente secuencia de eventos ocurre cuando:

•	Abre un formulario y cambia datos en un control:

Current (formulario) ⇒ Enter (control) ⇒ GotFocus (control) ⇒ BeforeUpdate (control) ⇒ AfterUpdate (control)

•	Mueve el enfoque a otro control:

Exit (control1) ⇒ LostFocus (control1) ⇒ Enter (control2) ⇒ GorFocus (control2)

•	Mueve el enfoque a otro registro:

BeforeUpdate (formulario) ⇒ AfterUpdate (formulario) ⇒ Exit (control2) ⇒ LostFocus (control2) ⇒ Current (formulario)

Para obtener más información sobre el orden de los eventos de controles en formularios, haga clic aquí  [image].

Eliminar registros

Cuando elimina un registro, ocurren los siguientes eventos para el formulario y Microsoft Access presenta un cuadro de diálogo solicitando confirmación para la eliminación:

Delete ⇒ BeforeDelConfirm ⇒ AfterDelConfirm

Si cancela el evento Delete, los eventos BeforeDelConfirm y AfterDelConfirm no ocurren y no se presenta el cuadro de diálogo.

Crear un nuevo registro

Cuando se mueve el enfoque a un nuevo registro (en blanco) en un formulario y a continuación se crea un nuevo registro escribiendo en un control, ocurre la siguiente secuencia de eventos:

Current (formulario) ⇒ Enter (control) ⇒ GotFocus (control) ⇒ BeforeInsert (formulario) ⇒ AfterInsert (formulario)

Los eventos BeforeUpdate y AfterUpdate para los controles en el formulario y para el nuevo registro ocurren después del evento BeforeInsert y antes del evento AfterInsert.

Para obtener más información sobre eventos, haga clic aquí  [image].


Orden de eventos para formularios y subformularios

Los eventos para formularios ocurren cuando se abre o se cierra un formulario, cuando se cambia de formulario o cuando se trabaja con datos en un formulario.

Abrir y cerrar un formulario

Cuando se abre un formulario, ocurre la siguiente secuencia de eventos:

Open ⇒ Load ⇒ Resize ⇒ Activate ⇒ Current

Si no hay controles activos en el formulario, el evento GotFocus ocurre también después del evento Activate, pero antes del evento Current.

Cuando se cierra un formulario, ocurre la siguiente secuencia de eventos:

Unload ⇒ Deactivate ⇒ Close

Si no hay controles activos en el formulario, el evento LostFocus ocurre también para el formulario después del evento Unload pero antes del evento Deactivate.

Mover entre formularios

Cuando cambia entre dos formularios abiertos, tiene lugar el evento Deactivate para el primer formulario y el evento Activate para el segundo formulario:

Deactivate (formulario1) ⇒ Activate (formulario2)

El evento Deactivate para un formulario ocurre también cuando se cambia desde el formulario a otra ventana de Microsoft Access. Sin embargo, el evento Deactivate no ocurre cuando cambia a un cuadro de diálogo, a un formulario cuya propiedad Emergente (Popup) esté establecida a Sí o a una ventana de otra aplicación.

Nota   Un evento Open no ocurre si se mueve a un formulario que ya esté abierto, incluso si se mueve al formulario llevando a cabo un acción AbrirFormulario.

Trabajar con datos en un formulario

Los eventos de formularios y controles ocurren cuando se mueve entre registros en el formulario y modifica datos. Por ejemplo, cuando se abre un formulario por primera vez, se produce la siguiente secuencia de eventos:

Open (formulario) ⇒ Load (formulario) ⇒ Resize (formulario) ⇒ Activate (formulario) ⇒ Current (formulario) ⇒ Enter (control) ⇒ GotFocus (control)

De forma similar, cuando se cierra un formulario, ocurre la siguiente secuencia de eventos:

Exit (control) ⇒ LostFocus (control) ⇒ Unload (formulario) ⇒ Deactivate (formulario) ⇒ Close (formulario)

Si ha modificado datos en un control, los eventos BeforeUpdate y AfterUpdate para ambos, el control y el formulario, ocurren antes de los eventos para el control Exit. Si desea obtener más información sobre el orden de los eventos para controles en formularios, haga clic aquí  [image].

Trabajar con subformularios

Cuando abre un formulario que contiene un subformulario, el subformulario y sus registros se cargan antes del formulario principal. Por eso, los eventos para el subformulario y sus controles (como Open, Current, Enter y GotFocus) ocurren antes de los eventos para el formulario. No obstante, el evento Activate no ocurre para subformularios, por lo que abrir un formulario principal desencadena un evento Activate sólo para el formulario principal.

Igualmente, cuando cierra un formulario que contiene un subformulario, el subformulario y sus registros se transfieren después del formulario. El evento Deactivate no ocurre para subformularios, por lo que cerrar un formulario principal desencadena un evento Deactivate sólo para el formulario principal. Los eventos para los controles, el formulario y el subformulario ocurren en el siguiente orden:

1.  Eventos para los controles del subformulario (como Exit y LostFocus)

2.  Eventos para los controles del formulario (incluyendo el control del subformulario)

3.  Eventos para el formulario (como Deactivate y Close)

4.  Eventos para el subformulario

Para obtener más información sobre eventos, haga clic aquí  [image].


Orden de eventos para pulsaciones de teclas y clics con el mouse

Los eventos del teclado ocurren para formularios y controles cuando se presionan teclas o se envían pulsaciones mientras el formulario o el control tienen el enfoque. Los eventos de mouse ocurren para formularios, secciones de formularios y controles cuando se presionan los botones del mouse, mientras el puntero del mouse está en un formulario, sección o control o cuando se mueve el puntero del mouse sobre un formulario, sección o control.

Eventos del teclado

Cuando se presiona y se suelta una tecla mientras un control en un formulario tiene el enfoque (o se utiliza la acción EnviarTeclas o una instrucción para enviar la pulsación de una tecla) ocurre la siguiente secuencia de eventos:

KeyDown ⇒ KeyPress ⇒ KeyUp

Cuando presiona y suelta una tecla o envía una pulsación de tecla en el juego de caracteres ANSI, ocurren los eventos KeyDown, KeyPress y KeyUp. Si presiona y mantiene presionada una tecla ANSI, los eventos KeyDown y KeyPress se alternan repetidamente (KeyDown, KeyPress, KeyDown, KeyPress y así sucesivamente) hasta que suelte la tecla, momento en el que ocurre el evento KeyUp. Para ver los caracteres del juego de caracteres ANSI, haga clic aquí  [image]  y en  [image].

Si presiona y suelta una tecla no ANSI, ocurren los eventos KeyDown y KeyUp. Si presiona y mantiene presionada una tecla no ANSI, ocurre repetidamente el evento KeyDown hasta que suelte definitivamente la tecla, momento en el que ocurre el evento KeyUp.

Si el presionar una tecla desencadena otro evento para un control, el otro evento ocurre después del evento KeyPress, pero antes del evento KeyUp. Por ejemplo, si una tecla cambia texto en un cuadro de texto, desencadenando un evento Change, ocurre la siguiente secuencia de eventos:

KeyDown ⇒ KeyPress ⇒ Change ⇒ KeyUp

Si al presionar una tecla se cambia el enfoque de un control a otro, el evento KeyDown ocurre para el primer control, mientras que los eventos KeyPress y KeyUp ocurren para el segundo control. Por ejemplo, si cambia los datos en un control y entonces presiona la tecla TAB para moverse al siguiente control, ocurre la siguiente secuencia de eventos:

•	Primer control:

KeyDown ⇒ BeforeUpdate ⇒ AfterUpdate ⇒ Exit ⇒ LostFocus

•	Segundo control:

Enter ⇒ GotFocus ⇒ KeyPress ⇒ KeyUp

Eventos del mouse

Cuando se presiona y se suelta un botón del mouse, mientras el puntero del mouse se encuentra en un control en un formulario, ocurre la siguiente secuencia de eventos para el control:

MouseDown ⇒ MouseUp ⇒ Click

Si un control tiene el enfoque y se hace clic en otro control para mover el enfoque a este segundo control, ocurre la siguiente secuencia de eventos:

•	Primer control:

Exit ⇒ LostFocus

•	Segundo control:

Enter ⇒ GotFocus ⇒ MouseDown ⇒ MouseUp ⇒ Click

Si se mueve a otro registro y hace clic en un control, el evento Current para el formulario también ocurre antes del evento Enter para el control.

Al hacer doble clic en un control se provoca que ocurran los eventos DblClick y Click. Por ejemplo, cuando hace doble clic en un control distinto a un botón de comando, ocurre la siguiente secuencia de eventos para el control:

MouseDown ⇒ MouseUp ⇒ Click ⇒ DblClick ⇒ MouseUp

Cuando se hace doble clic sobre un botón de comando, ocurren estos eventos, seguidos de un segundo evento Click.

El evento MouseMove para un formulario, sección o control ocurre cuando mueve el puntero del mouse sobre el formulario, sección o control. Este evento es independiente de los otros eventos de mouse.

Para obtener más información sobre eventos de teclado, haga clic aquí  [image].

Para obtener más información sobre eventos de mouse, haga clic aquí  [image].


Orden de eventos para informes y secciones de informes

Estos eventos ocurren para informes y secciones de informes cuando se abre un informe para imprimir o tener una vista previa del mismo o cuando se cierra un informe.

Eventos para informes

Cuando se abre un informe para imprimirlo o tener una vista previa del mismo y después se cierra o se mueve a otra ventana en Microsoft Access, ocurre la siguiente secuencia de eventos para el informe:

Open ⇒ Activate ⇒ Close ⇒ Deactivate

Cuando se cambia entre dos informes abiertos, el evento Deactivate ocurre para el primer informe y el evento Activate ocurre para el segundo informe:

Deactivate (informe1) ⇒ Activate (informe2)

El evento Deactivate para un informe ocurre también cuando se cambia del informe a otra ventana en Microsoft Access. Sin embargo, el evento Deactivate no ocurre cuando se cambia a un cuadro de diálogo, a un formulario cuya propiedad Emergente (Popup) está establecida a Sí o a una ventana en otra aplicación.

Cuando se abre un informe que está basado en una consulta, Microsoft Access desencadena el evento Open antes de ejecutar la consulta de base. Como resultado puede establecer los criterios para el informe utilizando una macro o un procedimiento de evento que responda al evento Open. Por ejemplo, la macro o el procedimiento de evento pueden abrir un cuadro de diálogo personalizado en el que se introducen los criterios del informe.

Eventos para secciones de informes

Cuando se imprime o se ve una vista previa de un informe, los eventos Format y Print ocurren para las secciones del informe después de los eventos Open y Activate para el informe y antes de los eventos Close o Deactivate del informe:

Open (informe) ⇒ Activate (informe) ⇒ Format (sección del informe) ⇒ Print (sección del informe) ⇒ Close (informe) ⇒ Deactivate (informe)

Adicionalmente, los siguientes eventos pueden ocurrir durante o después de dar formato, pero antes del evento Print:

•	El evento Retreat ocurre cuando Microsoft Access regresa a una sección previa durante el formato del informe.

•	El evento NoData ocurre si no hay registros presentados por el informe.

•	El evento Page ocurre después de dar formato, pero antes de imprimir. Puede usar este evento para personalizar el aspecto del informe impreso.

Para obtener más información sobre eventos, haga clic aquí  [image].


Crear o modificar macros

¿Qué desea hacer?

Ver una introducción de qué son las macros y cómo funcionan

Crear una macro

Crear un grupo de macros


Crear macros

¿Qué desea hacer?

Crear una macro

Crear un grupo de macros

Agregar una acción a una macro

Mover una acción en una macro

Introducir una expresión en un argumento de acción de macro

Aprender por qué se usan condiciones en una macro

Mostrar y ocultar nombres y condiciones de macro en la ventana Macro


Depurar macros

¿Qué desea hacer?

Buscar problemas en una macro al ir paso a paso por la misma

Solución de problemas de macros


Crear o modificar procedimientos en módulos

¿Qué desea hacer?

Ver una introducción de qué son los módulos y cómo funcionan

Aprender acerca de los procedimientos


Crear su primer procedimiento

¿Qué desea hacer?

Crear un procedimiento Function personalizado

Crear un procedimiento Sub personalizado

Crear un procedimiento de evento

Especificar argumentos cuando se utiliza un procedimiento, instrucción o método en el código de Visual Basic


Personalizar la ventana Módulo

¿Qué desea hacer?

Cambiar la forma en que se muestra el código de Visual Basic en la ventana Módulo

Desactivar la comprobación de errores de sintaxis del código de Visual Basic

Ignorar el tratamiento de errores en el código de Visual Basic

Requerir declaraciones de variables para el código de Visual Basic


Depuración de código de Visual Basic

¿Qué desea hacer?

Leer acerca de la resolución de errores

Usar un punto de interrupción para suspender la ejecución de código de Visual Basic

Ir paso a paso por el código de Visual Basic

Examinar los valores de expresiones y variables usando la ventana Depuración

Establecer una expresión de inspección en el código de Visual Basic

Seguimiento de llamadas de procedimientos de Visual Basic mientras depura código de Visual Basic

Usar el panel Inmediato en la ventana Depuración mientras trabaja con código de Visual Basic


Obtener Ayuda en la ventana Módulo

¿Qué desea hacer?

Obtener Ayuda sobre Visual Basic

Copiar ejemplos de código de Visual Basic desde la Ayuda a la ventana Módulo


Leer acerca de los módulos de Visual Basic

¿Qué desea hacer?

Ver una introducción de qué son los módulos y cómo funcionan

Aprender acerca de los procedimientos

Ejecutar código de Visual Basic

Trabajar con datos y objetos de bases de datos usando código de Visual Basic


Trabajar con macros en Visual Basic

¿Qué desea hacer?

Convertir macros a Visual Basic

Llevar a cabo una acción de macro en un procedimiento de Visual Basic

Ver una lista de acciones de macro que no tienen métodos DoCmd equivalentes


Trabajar con objetos en Visual Basic usando el Examinador de objetos

¿Qué desea hacer?

Localizar un método o propiedad en el Examinador de objetos

Usar el Examinador de objetos para pegar sintaxis de métodos o propiedades en un módulo


Cuándo utilizar una macro y cuándo Visual Basic para aplicaciones

En Microsoft Access, es posible llevar a cabo numerosas tareas mediante macros o a través de la interfaz de usuario. En muchos otros programas de base de datos, es necesario programar para realizar esas tareas. La elección de una macro o de Visual Basic para aplicaciones depende generalmente de lo que se desee hacer.

Cuándo utilizar una macro

Las macros son un método sencillo para llevar a cabo tareas sencillas como abrir y cerrar formularios, mostrar u ocultar barras de herramientas y ejecutar informes. Permiten vincular fácil y rápidamente los objetos de la base de datos creados, ya que no es necesario recordar mucha sintaxis; los argumentos de cada acción se muestran en la parte inferior de la ventana Macro.

Además de la facilidad de uso, deberá utilizar macros para:

•	Realizar asignaciones globales de teclas.

•	Ejecutar una acción o una serie de acciones cuando se abre por primera vez una base de datos. Además, puede usar el cuadro de diálogo Inicio para que se realicen determinadas operaciones cuando se abra una base de datos, como, por ejemplo, que se abra un formulario.

Cuándo utilizar Visual Basic

Utilice Visual Basic en lugar de macros cuando desee:

•	Facilitar el mantenimiento de la base de datos. Puesto que las macros son objetos independientes de los formularios y los informes que las utilizan, puede resultar difícil mantener una base de datos que contenga muchas macros que responden a eventos de formularios e informes. Por contraste, los procedimientos de evento de Visual Basic se incorporan a la definición del formulario o el informe. Si mueve un formulario o un informe de una base de datos a otra, se moverán con él procedimientos de evento incorporados en el formulario o el informe.

•	Cree sus propias funciones. Microsoft Access incluye muchas funciones incorporadas, como la función Interés (IPmt), la cual calcula el pago de intereses. Puede utilizar estas funciones para realizar cálculos sin necesidad de crear expresiones complicadas. Mediante Visual Basic, puede crear sus propias funciones para realizar cálculos que superen la capacidad de una expresión o reemplacen expresiones complejas. Además, puede utilizar las funciones que cree en expresiones para aplicar una operación común a más de un objeto.

•	Enmascarar mensajes de error. Cuando ocurre algo inesperado mientras trabaja el usuario con la base de datos y Microsoft Access muestra un mensaje de error, el mensaje puede resultar bastante desconcertante para el usuario, especialmente si no conoce Microsoft Access. Con Visual Basic, puede detectar el error cuando se produce y mostrar su propio mensaje o realizar alguna acción.

•	Crear o manipular objetos. En la mayoría de los casos, observará que es más fácil crear y modificar un objeto en la vista Diseño de ese objeto. Sin embargo, en algunas situaciones, es posible que desee manipular la definición de un objeto en código. Utilizando Visual Basic, puede manipular todos los objetos de una base de datos, así como la base de datos propiamente dicha.

•	Realizar acciones a nivel de sistema. Puede ejecutar la acción EjecutarAplicación en una macro para ejecutar otra aplicación basada en Windows o en MS-DOS desde su aplicación, en cambio una macro no sirve para hacer mucho más fuera de Microsoft Access. Con Visual Basic, puede comprobar si hay un archivo en el sistema, emplear Automatización o intercambio dinámico de datos (DDE) para comunicar con otras aplicaciones basadas en Windows como Microsoft Excel, y llamar a funciones de bibliotecas de vínculos dinámicos (DLL) de Windows.

•	Manipular registros uno a uno. Puede emplear Visual Basic para explorar una serie de registros uno a uno y realizar una operación en cada registro. Por contraste, las macros trabajan con conjuntos de registros completos.

•	Pasar argumentos a los procedimientos de Visual Basic. Puede establecer argumentos para acciones de macro en la parte inferior de la ventana Macro cuando crea la macro, pero no puede cambiarlos cuando se ejecuta la macro. Sin embargo, con Visual Basic puede pasar argumentos a su código en el momento que se ejecuta o utilizar variables para argumentos, algo que no puede hacer en macros y que proporciona una gran flexibilidad en la forma de ejecutar los procedimientos de Visual Basic.


Crear un botón de comando que imprima el registro activo

1	Abra el formulario en vista Diseño.

2	Haga clic en Asistentes para controles [image]  en el cuadro de herramientas si no está presionado.

3	En el cuadro de herramientas, haga clic en Botón de comando [image].

4	En el formulario, haga clic donde desee colocar el botón de comando.

5	En el primer cuadro de diálogo del asistente, haga clic en Operaciones con registros en el cuadro Categorías y, a continuación, haga clic en Imprimir registro en el cuadro Acciones.

6	Siga las instrucciones de los cuadros de diálogo del asistente. En el último cuadro de diálogo, haga clic en Terminar para mostrar el botón de comando en la vista Diseño.

Si desea ver el procedimiento de evento que hace que funcione el botón, abra la hoja de propiedades del botón y haga clic en el botón Generar  [image] situado al lado del cuadro de la propiedad Al hacer clic (OnClick).

Sugerencia   Puede imprimir un registro activo del formulario en un informe ejecutando la acción AbrirInforme en el procedimiento de evento Click del botón de comando. Por ejemplo, al agregar el siguiente código de Visual Basic para aplicaciones al procedimiento de evento Click para un botón de comando en un formulario Pedidos se imprimirá el registro activo del informe Factura:

Dim cadDocName As String

Dim cadFilter As String

cadDocName = "Factura"

cadFilter = "OrderID = Forms!Pedidos!OrderID"

DoCmd.OpenReport DocName, acviewNormal, , cadFilter


Acerca de establecer el valor de un control o una propiedad en respuesta a un evento

Si asigna nuevos valores a controles y propiedades en respuesta a eventos que se producen en un formulario o un informe, podrá hacer que los objetos que ha creado funcionen juntos de modo que resulte más fácil utilizarlos.

Estas son algunas situaciones en las que deben establecerse valores con una macro o un procedimiento de evento:

Establecer el valor de un control en un formulario igual al valor de un control en otro formulario

Por ejemplo, puede situar un botón de comando en un formulario Clientes que abra un formulario Pedidos y rellene automáticamente información de facturación a partir del formulario Clientes.

Actualizar el valor de un control que depende del valor de otro control

Por ejemplo, puede disponer de un control FechaDePago cuyo valor predeterminado sea la fecha de expedición (el valor del control FechaDeEnvío). Puede utilizar una macro o un procedimiento de evento para restablecer automáticamente el valor del control FechaDePago cada vez que cambie el valor del control FechaDeEnvío.

Para obtener más información sobre cómo establecer el valor de un control basándose en el valor de otro control, haga clic aquí  [image].

Establecer la propiedad de un formulario o un control en respuesta a una selección u otro evento

Puede utilizar una macro o un procedimiento de evento para establecer la propiedad de un formulario o un control con el fin de:

•	Ocultar o mostrar un control basado en el valor de otro control. Por ejemplo, si desea que el control FechaDébito de un formulario Pedidos esté oculto si ya se ha pagado el pedido (si el valor del control Pagado es Sí) o visible si el pago está pendiente.

•	Desactivar o bloquear un control basándose en el valor de otro control. Por ejemplo, puede desactivar un control PermisoDeConducción si el valor de un control Edad está por debajo de la edad mínima necesaria para obtener el permiso de conducir.

•	Mostrar distintos conjuntos de registros según la selección. Por ejemplo, puede controlar qué registros se muestran en un formulario Clientes, según la opción seleccionada en un grupo de opciones Tipo de cliente. Para ello, establezca la propiedad OrigenDelRegistro (RecordSource) del formulario como una consulta entre varias posibles, cada una de las cuales contiene los registros para distintos conjuntos de clientes.

Para obtener más información sobre cómo establecer el valor de una propiedad en respuesta a un evento, haga clic aquí  [image].


Establecer el valor de un control a partir del valor de otro control

Para asignar el valor de un control a partir del valor de otro control, agregue una acción EstablecerValor a una macro o utilice una instrucción de asignación en un procedimiento de Visual Basic.

¿Qué desea hacer?

Establecer el valor de un control a partir del valor de otro control utilizando una macro

Establecer el valor de un control a partir del valor de otro control utilizando Visual Basic para aplicaciones


Establecer el valor de un control a partir del valor de otro control utilizando una macro

1	Cree una macro.

¿Cómo?

2	En una fila de acción en blanco, haga clic en EstablecerValor en la lista de acciones.

3	Establezca el argumento Elemento como el identificador del control cuyo valor desea establecer y, a continuación, establezca el argumento Expresión como el identificador del control cuyo valor desea asignar al primer control.

4	Haga clic en Guardar  [image]  para guardar la macro.

5	Ejecute la macro.

¿Cómo?

Nota   Dependiendo del contexto, es posible que desee usar cierto tipo de identificadores para los controles. Si desea más información acerca del uso de identificadores en expresiones, haga clic aquí  [image].


Establecer el valor de un control a partir del valor de otro control utilizando Visual Basic

1	Cree un procedimiento de Visual Basic.

¿Cómo?

2	Agregue una instrucción de asignación al procedimiento escribiendo el identificador del control cuyo valor desea establecer, un signo igual (=) y el identificador del control cuyo valor desea asignar al primer control.

•	Para hacer referencia al valor de un control del formulario activo, escriba la palabra clave Me seguida del operador ! y el nombre del control. Por ejemplo, la instrucción siguiente asigna el valor del control Ciudad del formulario activo al control CiudadDestinatario del formulario activo:

Me![CiudadDestinatario] = Me![Ciudad]

•	Para hacer referencia al valor de un control de otro formulario, escriba el identificador completo del control. Por ejemplo, el identificador siguiente hace referencia al control CiudadDestinatario del formulario FormaEnvío:

Forms![FormaEnvío]![CiudadDestinatario]

3	Ejecute el procedimiento.

¿Cómo?

Para obtener más información sobre cómo hacer referencia al valor de un control, haga clic aquí  [image].


Establecer el valor de una propiedad en respuesta a un evento

Para asignar el valor de una propiedad en respuesta a un evento, como hacer clic en un botón de comando, agregue una acción EstablecerValor a una macro o utilice una instrucción de asignación en un procedimiento de Visual Basic.

¿Qué desea hacer?

Establecer el valor de una propiedad en respuesta a un evento utilizando una macro

Establecer el valor de una propiedad en respuesta a un evento utilizando Visual Basic para aplicaciones


Establecer el valor de una propiedad en respuesta a un evento utilizando una macro

1	Cree una macro.

¿Cómo?

2	En una fila de acción en blanco, haga clic en EstablecerValor en la lista de acciones.

3	Establezca el argumento Elemento como el identificador de la propiedad cuyo valor desea establecer y, a continuación, establezca el argumento Expresión como el valor que desea asignar a la propiedad.

4	Haga clic en Guardar  [image]  para guardar la macro.

5	Desde el formulario o el informe, abra la hoja de propiedades para el objeto cuyo evento ejecutará la macro y establezca la propiedad del evento al nombre de la macro.

Si desea un ejemplo de establecimiento del valor de una propiedad en respuesta a un evento, haga clic aquí  [image].


Establecer el valor de una propiedad en respuesta a un evento utilizando Visual Basic

1	Crea un procedimiento de evento.

¿Cómo?

2	Agregue una instrucción de asignación al procedimiento escribiendo el identificador de la propiedad cuyo valor desea establecer, un signo igual (=) y el valor que desea asignar.

•	Para hacer referencia a la propiedad de un control del formulario activo, escriba la palabra clave Me seguida del operador !, el nombre del control, el operador . (punto) y el nombre de la propiedad. Por ejemplo, la instrucción siguiente asigna el valor False a la propiedad Visible del control FechaDébito del formulario activo:

Me![FechaDébito].Visible = False

•	Para hacer referencia a la propiedad de un control de un formulario distinto, escriba el identificador completo del control. Por ejemplo, el identificador siguiente hace referencia a la propiedad Visible del control FechaDébito del formulario FormaEnvío:

Forms![FormaEnvío]![FechaDébito].Visible

Para obtener más información sobre cómo hacer referencia a una propiedad, haga clic aquí  [image].

Si desea un ejemplo de establecimiento del valor de una propiedad en respuesta a un evento, haga clic aquí  [image].


Ejemplo de establecimiento del valor de una propiedad en respuesta a un evento

Para establecer el valor de una propiedad a partir de un valor del registro activo, puede ejecutar una macro o un procedimiento de evento en respuesta al evento Current del formulario. Por ejemplo, es posible que desee ocultar el control FechaDébito de un formulario Pedidos si el pedido está pagado (si el valor del control Pagado es Sí o True).

Para ejecutar una macro, establezca la propiedad del evento AlActivarRegistro (OnCurrent) del formulario al nombre de una macro que establece la propiedad Visible del control FechaDébito como No si el valor del control Pagado es Sí.

Para utilizar un procedimiento de evento, agregue el siguiente código de Visual Basic al procedimiento de evento Form_Current:

If Me![Pagado] = True Then

Me![FechaDébito].Visible = False

Else

Me![FechaDébito].Visible = True

End If


Sincronizar registros entre dos formularios

A menudo puede resultar conveniente examinar al mismo tiempo registros relacionados en dos formularios. Por ejemplo, mientras examina el registro de un cliente de un formulario Clientes, puede desear abrir un formulario Pedidos que muestre los pedidos del cliente.

Al desplazarse por los registros de un formulario, es posible que también desee ver los registros relacionados en un segundo formulario. Por ejemplo, cuando se desplaza por los registros de proveedor de un formulario Proveedores, puede desear ver los productos de cada proveedor en un formulario Productos.

Puede sincronizar los registros de dos formularios creando un botón de comando que abra y sincronice un segundo formulario, o utilizando el evento Current para mostrar registros relacionados en el segundo formulario cuando se desplaza por los registros del primer formulario.

Sugerencia   También puede usar el Asistente para formularios para crear, partiendo de cero, dos formularios relacionados. En la primera pantalla del asistente, seleccione campos de dos tablas diferentes. En la segunda pantalla, haga clic en Formularios vinculados. El asistente crea los dos formularios relacionados, conteniendo cada uno campos de una de las tablas. Uno de los formularios también tiene un botón de comando que abre el otro formulario y sincroniza los registros entre los formularios.

¿Qué desea hacer?

Crear un botón de comando que abra y sincronice un formulario

Mostrar registros relacionados en un formulario mientras se desplaza por los registros de otro formulario


Mostrar registros relacionados en un formulario al desplazarse por los registros de otro formulario

Mientras se desplaza por los registros de un formulario, puede mostrar registros relacionados en un segundo formulario ejecutando una macro o un procedimiento de evento en respuesta al primer evento Current del formulario.

¿Qué desea hacer?

Utilizar una macro para mostrar registros relacionados mientras se desplaza por los registros relacionados de un formulario

Emplear Visual Basic para aplicaciones para mostrar registros relacionados mientras se desplaza por los registros de un formulario


Utilizar una macro para mostrar registros relacionados al desplazarse por los registros de un formulario

1	Abra el primer formulario en la vista Diseño.

2	Cree una macro.

¿Cómo?

3	En una fila de acción en blanco, haga clic en AbrirFormulario en la lista de acciones.

Establezca el argumento Nombre del formulario al nombre del segundo argumento y, a continuación, establezca el argumento Condición WHERE para mostrar los registros relacionados que desea en el segundo formulario. Para ver un ejemplo, haga clic aquí  [image].

4	En la vista Diseño, establezca la propiedad de evento AlActivarRegistro (OnCurrent) del primer formulario al nombre de la macro.


Ejemplo de uso de una macro para mostrar registros relacionados al desplazarse por los registros

Cuando se desplaza por los registros de proveedores de un formulario Proveedores, puede resultar conveniente ver los productos de cada proveedor en un formulario Lista de productos. Para ello, ejecute una acción AbrirFormulario en una macro que se ejecuta en respuesta al evento Current del formulario Proveedor. Puede hacer que el formulario Lista de productos muestre los registros cuyo valor en el campo IdProveedor en la tabla base coincida con el valor del campo IdProveedor del formulario. Establezca el argumento de la Condición WHERE de la acción como se indica:

[IdProveedor]=Forms![Proveedores]![IdProveedor]

Sugerencia   Si no desea que el formulario Productos se abra cada vez que se desplaza por los registros del formulario Proveedores, incluya una expresión condicional en la macro que compruebe si está abierto el formulario Lista de productos.

Después de crear la macro, establezca la propiedad AlActivarRegistro (OnCurrent) del formulario Proveedores al nombre de la macro.


Utilizar Visual Basic para mostrar registros relacionados al desplazarse por los registros de un formulario

1	Abra el primer formulario en la vista Diseño.

2	Abra el procedimiento de evento Form_Current del formulario.

¿Cómo?

3	Agregue código de Visual Basic al procedimiento de evento para mostrar registros del segundo formulario que tengan valores que coincidan con un campo relacionado del primer formulario.

Si desea un ejemplo de cómo utilizar Visual Basic para mostrar registros relacionados mientras se desplaza por los registros de un formulario, haga clic aquí  [image].


Ejemplo del uso de Visual Basic para mostrar registros relacionados al desplazarse por los registros

Al desplazarse por registros de proveedores en un formulario Proveedores, es posible que desee ver los productos de cada proveedor en un formulario Productos. En el procedimiento de evento Form_Current del formulario Proveedores, establezca las propiedades ActivarFiltro (FilterOn) y Filtro (Filter) en el formulario Productos.

Private Sub Form_Current()

‘ Declara y establece una variable para almacenar la cláusula

‘ WHERE que describe los registros que desea

‘ mostrar.

Dim cadCond As String

cadCond = "IdProveedor = Forms!Proveedores!IdProveedor"

‘ Use la función EstáCargado de la base de datos

‘ de ejemplo Neptuno para comprobar si está abierto el formulario

‘ Productos, y establezca las propiedades.

If EstáCargado("Productos") Then

Forms![Productos].FilterOn = True

Forms![Productos].Filter = cadCond

End If

End Sub


Buscar un registro seleccionando un valor de una lista

En un formulario, puede crear un cuadro de lista o un cuadro combinado que busque un registro cuando seleccione un valor de la lista.

1	Abra el formulario en la vista Diseño.

2	Haga clic en Asistentes para controles [image]  del cuadro de herramientas si no está presionado.

3	En el cuadro de herramientas, haga clic en Cuadro de lista [image] o en Cuadro combinado [image].

4	En el formulario, haga clic donde desee situar el cuadro de lista o el cuadro combinado.

5	En el primer cuadro de diálogo del asistente, haga clic en la opción para buscar un registro basándose en el valor que ha seleccionado en el cuadro de lista o en el cuadro combinado.

6	Siga las instrucciones en los cuadros de diálogo del asistente. En el último cuadro de diálogo, haga clic en Terminar para mostrar el cuadro de lista o el cuadro combinado en la vista Diseño.

Si desea ver el procedimiento de evento que hace que funcione el cuadro de lista o el cuadro combinado, abra la hoja de propiedades del cuadro y, a continuación, haga clic en el botón Generar  [image] situado al lado del cuadro de la propiedad Después de actualizar (AfterUpdate).


Razones para utilizar una macro o un procedimiento de evento para validación de datos

En la mayoría de los casos, puede comprobar la correcta introducción de los datos en un control de un formulario estableciendo la propiedad ReglaDeValidación (ValidationRule) del control, o estableciendo reglas de validación del registro o el campo en la tabla base de la que depende el control. Las macros y los procedimientos de evento proporcionan una mayor potencia y flexibilidad para conseguir una validación más compleja.

Use una macro o un procedimiento de evento para validación de datos si:

•	La regla de validación tiene condiciones para más de un valor del formulario. Por ejemplo, puede comprobar si dos de tres campos están llenos antes de guardar un registro.

•	Desea mostrar distintos mensajes de error para distintos tipos de errores en el campo. Por ejemplo, si el valor introducido es mayor que el rango aceptable, puede mostrar un mensaje y si es menor que el rango aceptable, puede mostrar otro mensaje.

•	Desea que el usuario pueda ignorar las reglas de validación. En este caso, puede mostrar un mensaje de advertencia pidiendo al usuario que confirme los datos.

•	La validación contiene referencias a controles de otros formularios o contiene una función.

•	Tiene una regla de validación que puede emplear para más de un formulario, y desea definir la regla una vez y, a continuación, hacer referencia a ella en cada formulario.

Para obtener más información sobre cómo crear una macro, haga clic aquí  [image].

Para obtener más información sobre cómo personalizar un procedimiento de evento, haga clic aquí  [image].


Validar datos utilizando una macro o un procedimiento de evento

Puede utilizar una macro o un procedimiento de evento para validar los datos que se introducen en un formulario creando una macro que responda a un evento del formulario, o creando procedimientos de evento.

¿Qué desea hacer?

Validar datos utilizando una macro

Validar datos utilizando un procedimiento de evento

Aprender más acerca del uso de una macro o un procedimiento de evento para validación de los datos


Validar datos utilizando una macro

1	Cree una macro.

¿Cómo?

2	En la ventana Macro, asegúrese de que Condiciones  [image] en la barra de herramientas está presionado.

3	En la columna Condición de una fila de acciones en blanco, introduzca una condición de validación.

4	En la columna Acción, haga clic en la acción de la lista de acciones que desea ejecutar si la condición de validación es verdadera.

5	Para cualquier acción adicional que desee ejecutar si la condición de validación es verdadera, introduzca puntos suspensivos (...) en la columna Condición seguida de una acción en la columna Acción. Por ejemplo, es conveniente ejecutar una acción CancelarEvento para cada condición de validación después de ejecutar las demás acciones.

6	Haga clic en Guardar  [image]  para guardar la macro.

7	Abra el formulario en vista Diseño.

8	Para el evento que desea que desencadene la validación, establezca la propiedad del evento al nombre de la macro. Por ejemplo, para desencadenar la validación cuando se actualiza un control con datos modificados, establezca la propiedad del evento AntesDeActualizar (BeforeUpdate) del control al nombre de la macro.

Sugerencia   Para validar los datos antes de actualizar un registro completo, adjunte la macro de validación al evento BeforeUpdate del formulario en lugar de al evento BeforeUpdate del control.

Si desea un ejemplo de validación de datos utilizando una macro, haga clic aquí  [image].

Para obtener información sobre los eventos empleados para validación de datos, haga clic aquí  [image].

Para obtener información sobre el orden de validación de controles y campos, haga clic aquí  [image].


Ejemplo de validación de datos utilizando una macro

En algunas circunstancias, puede utilizar reglas de validación que dependen de condiciones complejas, y realizar distintas acciones según las condiciones. Por ejemplo, puesto que cada país tiene sus propias reglas para los códigos postales, una base de datos que almacena códigos postales de muchos países no puede utilizar una sola regla de validación para asegurar que el código postal se introduce correctamente.

Sin embargo, puede crear una macro que compruebe qué país se introduce en el control País y, a continuación, comprobar que el valor introducido en el control CódPostal tiene las características correctas para ese país.

En primer lugar, cree una macro que muestre distintos mensajes según el valor del control País y la longitud de la entrada en el control CódPostal.

Después, abra el formulario que contiene los controles en vista Diseño y establezca la propiedad de evento AntesDeActualizar (BeforeUpdate) del formulario al nombre de la macro. Utilice la propiedad del formulario en lugar de la propiedad del control, ya que en la validación intervienen dos controles distintos del formulario.

Cuando utilice el formulario para agregar un nuevo proveedor, Microsoft Access ejecutará la macro de validación cuando termine de introducir el nuevo registro, pero antes de guardar el registro en la tabla Proveedores. Si no se cumple una de las condiciones, Microsoft Access muestra el mensaje correspondiente y no guarda el registro en la tabla Proveedores.


Validar datos utilizando un procedimiento de evento

1	Abra el formulario en la vista Diseño.

2	Cree el procedimiento del evento que desea que desencadene la validación.

¿Cómo?

Por ejemplo, para desencadenar la regla de validación cuando se actualiza un control con datos modificados, cree el procedimiento de evento para el evento BeforeUpdate del control.

3	Agregue código de Visual Basic para aplicaciones al procedimiento de evento, especificando la condición de validación y las operaciones que va a realizar cuando se cumplan esas condiciones.

Sugerencias

•	Suele ser conveniente cancelar el evento que desencadena la validación cuando se han llevado a cabo las operaciones. Puede cancelar muchos eventos estableciendo el argumento Cancelar del procedimiento de evento como True.

•	Para validar datos antes de que se actualice el registro completo, agregue código al procedimiento de evento BeforeUpdate para el formulario, mejor que para el control.

Si desea un ejemplo de cómo validar datos utilizando un procedimiento de evento, haga clic aquí  [image].

Para obtener información sobre los eventos empleados para validación de datos, haga clic aquí  [image].

Para obtener información sobre el orden de validación de controles y campos, haga clic aquí  [image].


Ejemplo de validación de datos utilizando un procedimiento de evento

En algunas circunstancias, puede resultar conveniente utilizar reglas de validación que dependan de condiciones complejas y, a continuación, realizar distintas acciones según esas condiciones. Por ejemplo, dado que cada país tiene sus propias reglas para los códigos postales, una base de datos que almacene códigos postales no podrá emplear una sola regla de validación para asegurar que un código postal se introduce correctamente.

Sin embargo, puede crear un procedimiento de evento que compruebe qué país se introduce en el control País y, a continuación, compruebe que el valor introducido en el control CódPostal tiene las características correctas para ese país.

En primer lugar, abra el formulario que contiene los controles en la vista Diseño. A continuación, agregue el código de Visual Basic siguiente al procedimiento de evento BeforeUpdate del formulario para mostrar distintos mensajes según el valor del control País y la longitud de la entrada en el control CódPostal.

Private Sub Form_BeforeUpdate(Cancelar As Integer)

Select Case Me![País]

Case "Francia", "Italia", "España"

If Len(Me![CódPostal]) <> 5 Then

MsgBox "CódPostal debe tener 5 caracteres."

Cancelar = True

End If

Case "Australia", "Singapur"

If Len(Me![CódPostal]) <> 4 Then

MsgBox "CódPostal debe tener 4 caracteres."

Cancelar = True

End If

End Select

End Sub

Nota   Agregue el código de Visual Basic al procedimiento de evento BeforeUpdate para el formulario, no para el control, ya que en la validación intervienen dos controles distintos del formulario.

Cuando utilice el formulario para agregar un nuevo proveedor, Microsoft Access ejecutará el procedimiento de validación cuando termine de introducir el nuevo registro, pero antes de guardarlo en la tabla Proveedores. Si no se cumple alguna condición del procedimiento, Microsoft Access mostrará el mensaje correspondiente y no guardará el registro en la tabla Proveedores.


Eventos empleados para validación de datos

Utilice los siguientes eventos para determinar cuándo ejecuta Microsoft Access una macro o un procedimiento de evento de validación desde un formulario.

Evento de formulario	Use para validar
BeforeUpdate	Antes de guardar datos nuevos o modificados en un registro
OnDelete	Antes de eliminar un registro
Evento de control	Use para validar
BeforeUpdate	Antes de guardar datos nuevos o modificados en un control
OnExit	Antes de salir de un control


Orden de validación de controles y campos

Las reglas de validación de controles y campos se evalúan en el orden siguiente:

1	Validación de macros o procedimientos de evento (por ejemplo, una macro o un procedimiento de evento que responde al evento BeforeUpdate del control o el formulario que contiene el control)

2	La propiedad ReglaDeValidación (ValidationRule) del control

3	Las reglas de validación del campo de la tabla base (establecidas en las propiedades ReglaDeValidación (ValidationRule), Requerido (Required) y PermitirLongitudCero (AllowZeroLength) del campo)

4	La propiedad ReglaDeValiación (ValidationRule) de la tabla base (esta propiedad realiza la validación en registros)


Imprimir un informe a partir de un formulario

Puede automatizar el modo en que un usuario imprime un informe ejecutando las acciones AbrirInforme e Imprimir en una macro o un procedimiento de evento. Por ejemplo, puede permitir que un usuario imprima un informe haciendo clic en un botón de un formulario, eligiendo un comando de un menú personalizado o presionando una combinación de teclas.

Utilice la acción AbrirInforme si desea restringir los registros que se imprimen, o si desea abrir una Vista preliminar. Cuando utiliza la acción AbrirInforme para imprimir un informe, Microsoft Access imprime el informe empleando la configuración predeterminada en el cuadro de diálogo Imprimir.

Use la acción Imprimir para definir opciones de impresión antes de imprimir el informe. La acción Imprimir incluye argumentos para todas las opciones del cuadro de diálogo Imprimir.

¿Qué desea hacer?

Crear un botón de comando que imprima un informe

Agregar la acción AbrirInforme o Imprimir a una macro

Ejecutar la acción AbrirInforme o Imprimir en un procedimiento de Visual Basic

Leer acerca de la acción AbrirInforme

Leer acerca de la acción Imprimir


Realizar un salto de página en un informe si se cumple una condición

Puede realizar un salto de página en un informe si se cumple una condición estableciendo la propiedad Visible de un control de salto de página en una macro o un procedimiento de evento.

¿Qué desea hacer?

Utilizar una macro para realizar un salto de página en un informe si se cumple una condición

Utilizar Visual Basic para aplicaciones para realizar un salto de página en un informe si se cumple una condición


Utilizar una macro para realizar un salto de página en un informe si se cumple una condición

1	Abra el informe en la vista Diseño.

2	En el cuadro de herramientas, haga clic en Salto de página [image] y, a continuación, en la sección del informe en la que desea realizar un salto de página condicional.

3	Haga clic en Propiedades  [image] en la barra de herramientas, y especifique un nombre para el control de salto de página en el cuadro Nombre.

4	Cree una macro.

¿Cómo?

5	En una fila de acción en blanco, haga clic en EstablecerValor en la lista de acciones.

6	Establezca el argumento Elemento como el identificador para la propiedad Visible del control de salto de página. Por ejemplo, si el nombre del control es CondPgBreak, establezca el argumento Elemento como [CondPgBreak]. [Visible].

7	Establezca el argumento Expresión como No.

8	Haga clic en Guardar  [image]  para guardar la macro.

9	En la vista Diseño del informe, establezca la propiedad Al dar formato de la sección de encabezado de página del informe al nombre de la macro.

De este modo se ocultará el control de salto de página cuando el informe comience a dar formato a cada página, de modo que no se interrumpa la página.

10	Cree una segunda macro que establezca la propiedad Visible del control de salto de página a Sí cuando se cumpla una expresión condicional.

11	Haga clic en Guardar  [image]  para guardar la macro.

12	Seleccione la sección donde colocar el salto de página, y establezca la propiedad Al dar formato de la sección al nombre de la segunda macro. Usando el ejemplo anterior, para hacer que se produzca un salto de página si el control Contador en la sección detalle es 10, establezca la propiedad Al dar formato al nombre de la segunda macro.

Cuando se cumple la condición, se produce un salto de página. Posteriormente, la macro adjunta al encabezado de la página oculta el control de salto de página hasta que la condición se cumple otra vez.


Utilizar Visual Basic para realizar un salto de página si se cumple una condición

1	Abra el informe en la vista Diseño.

2	En el cuadro de herramientas, haga clic en Salto de página [image] y, a continuación, en la sección del informe donde desea realizar una salto de página condicional.

3	Abra el procedimiento de evento PageHeader_Format del evento.

¿Cómo?

4	En el procedimiento de evento, agregue una instrucción de asignación que establezca la propiedad Visible del control de salto de página como No. Por ejemplo, si el nombre del control es CondPgBreak, agregue la instrucción de asignación siguiente:

Me![CondPgBreak].Visible = False

De este modo se ocultará el control de salto de página cuando el informe comience a dar formato a cada página, de modo que no se interrumpa la página.

5	En el procedimiento de evento Format de la sección donde colocar el salto de página, agregue código de Visual Basic que establezca la propiedad Visible como Sí cuando se cumpla una condición. Por ejemplo, suponga que desea realizar un salto de página en la sección detalle del informe si el valor del control Contador es 10, de tal forma que los 10 primeros registros se imprimirán en la primera página. Agregue el código siguiente al procedimiento de evento Detail_Format:

If Me![Contador] = 10 Then

Me![CondPgBreak].Visible = True

End If

Cuando se cumple la condición, se produce el salto de página. Posteriormente, el procedimiento de evento adjunto al encabezado de la página oculta el control de salto de página hasta que la condición se cumple otra vez.


Mostrar u ocultar mensajes de advertencia

Puede desactivar temporalmente los mensajes de advertencia modales que muestra Microsoft Access mientras se ejecuta una macro o un procedimiento de Visual Basic, o volver a activarlos, ejecutando la acción EstablecerAdvertencias en la macro o el procedimiento.

¿Qué desea hacer?

Mostrar u ocultar mensajes de advertencia usando una macro

Mostrar u ocultar mensajes de advertencia usando Visual Basic para aplicaciones


Mostrar u ocultar mensajes de advertencia utilizando una macro

1	Abra una macro existente en la ventana Macro.

¿Cómo?

2	En el lugar de la macro donde desee detener o reanudar la presentación de mensajes de advertencia modales, agregue la acción EstablecerAdvertencias.

¿Cómo?

3	Para detener temporalmente la presentación de mensajes de advertencia, establezca el argumento Activar advertencias a No. Para reanudar la presentación, establezca el argumento Activar advertencias a Sí.

4	Haga clic en Guardar  [image]  para guardar la macro.

5	Ejecute la macro.

¿Cómo?

Cuando la macro deje de ejecutarse, se reanudará automáticamente la presentación de mensajes de advertencia.


Mostrar u ocultar mensajes de advertencia utilizando Visual Basic

1	Abra un procedimiento Function o Sub en la ventana Módulo.

2	En el lugar del procedimiento donde desea detener o reanudar la presentación de mensajes de advertencia modales, utilice el método SetWarnings para ejecutar la acción EstablecerAdvertencias.

¿Cómo?

3	Para detener temporalmente la presentación de mensajes de advertencia, establezca el argumento ActivarAdvertencias a False. Para reanudar la presentación, establezca el argumento ActivarAdvertencias a True.

4	Ejecute el procedimiento.

¿Cómo?

Cuando termine de ejecutarse el código, se reanudará automáticamente la presentación de mensajes de advertencia.

Si desea más información acerca del método SetWarnings, haga clic aquí  [image].


Desplazarse por controles, registros y páginas de formularios

Puede desplazarse automáticamente a un control, un registro o una página de formulario en respuesta a un evento que se produce en un formulario ejecutando las acciones IrAControl, IrAPágina o IrARegistro en una macro o un procedimiento de evento.

¿Qué desea hacer?

Desplazarse por controles, registros y páginas de formularios utilizando una macro

Desplazarse por controles, registros y páginas de formularios utilizando Visual Basic para aplicaciones


Desplazarse por controles, registros y páginas de formularios utilizando una macro

1	Cree una macro.

¿Cómo?

2	Lleve a cabo una de estas acciones:

•	Para desplazar el enfoque a un control específico o a un campo en el registro actual, haga clic en IrAControl en la lista de acciones de una fila de acciones en blanco y, a continuación, establezca el argumento Nombre del control al nombre del control al que desea desplazarse.

•	Para hacer que un registro específico sea el registro actual, haga clic en IrARegistro en la lista de acciones de una fila de acciones en blanco y, a continuación, establezca los argumentos.

•	Para desplazar el enfoque en el formulario activo desde el primer control en una página de formulario específica, haga clic en IrAPágina en la lista de acciones de una fila de acciones en blanco y, a continuación, establezca los argumentos.

3	Haga clic en Guardar  [image]  para guardar la macro.

4	Ejecute la macro.

¿Cómo?

Para obtener más información sobre la acción IrAControl, haga clic aquí  [image].

Para obtener más información sobre la acción IrARegistro, haga clic aquí  [image].

Para obtener más información sobre la acción IrAPágina, haga clic aquí  [image].


Desplazarse por controles, registros y páginas de formularios utilizando Visual Basic

1	Abra el procedimiento del evento correspondiente en la ventana Módulo.

¿Cómo?

Por ejemplo, para responder a un clic de mouse en un botón de comando, abra el procedimiento de evento Click del botón.

2	Realice una de las siguientes acciones:

•	Para desplazar el enfoque a un control específico o a un campo en el registro actual, ejecute el método GoToControl en el procedimiento, estableciendo el argumento Nombre del control al nombre del control al que desea desplazarse.

 ¿Cómo?

•	Para hacer que un registro específico sea el registro actual o para crear un nuevo registro, use el método GoToRecord para ejecutar la acción IrARegistro en el procedimiento.

•	Para desplazar el enfoque desde el formulario activo al primer control en una página de formulario específica, utilice el método GoToPage para ejecutar la acción IrAPágina en el procedimiento.

3	Ejecute el procedimiento.

¿Cómo?

Sugerencia   También puede emplear Visual Basic para aplicaciones para localizar o desplazarse por los registros utilizando un objeto Recordset y el método Seek o cualquiera de los métodos Move o Find.

Para obtener más información sobre la acción IrAControl, haga clic aquí  [image].

Para obtener más información sobre la acción IrARegistro, haga clic aquí  [image].

Para obtener más información sobre la acción IrAPágina, haga clic aquí  [image].

Para obtener más información sobre el objeto Recordset y sus métodos, haga clic aquí  [image].


Automatizar la importación, exportación o vinculación de datos

Según el tipo de datos con el que trabaje, puede automatizar la importación, exportación y vinculación de datos ejecutando la acción TransferirBaseDatos, TransferirHojaCálculo o TransferirTexto en una macro o un procedimiento de Visual Basic.

¿Qué desea hacer?

Automatizar la importación, exportación o vinculación de datos utilizando una macro

Automatizar la importación, exportación o vinculación de datos utilizando Visual Basic para aplicaciones


Automatizar la importación, exportación o vinculación de datos utilizando una macro

1	Cree una macro.

¿Cómo?

2	Lleve a cabo una de estas acciones:

•	Para importar, exportar o vincular datos entre la base de datos actual de Microsoft Access y otra base de datos, haga clic en TransferirBaseDatos en la lista de acciones de una fila de acciones en blanco.

•	Para importar, exportar o vincular datos entre la base datos actual de Microsoft Access y un archivo de hoja de cálculo, haga clic en TransferirHojaCálculo en la lista de acciones de una fila de acciones en blanco.

•	Para importar, exportar o vincular datos entre la base datos actual de Microsoft Access y un archivo de texto, haga clic en TransferirTexto en la lista de acciones de una fila de acciones en blanco.

3	Establezca los argumentos de acciones.

4	Haga clic en Guardar  [image]  para guardar la macro.

5	Ejecute la macro.

¿Cómo?

Para obtener más información sobre la acción TransferirBaseDatos, haga clic aquí  [image].

Para obtener más información sobre la acción TransferirHojaCálculo, haga clic aquí  [image].

Para obtener más información sobre la acción TransferirTexto, haga clic aquí  [image].


Automatizar la importación, exportación o vinculación de datos utilizando Visual Basic

1	Cree un procedimiento de Visual Basic.

¿Cómo?

2	Lleve a cabo una de estas acciones:

•	Para importar, exportar o vincular datos entre la base de datos actual de Microsoft Access y otra base de datos, utilice el método TransferDatabase para ejecutar la acción TransferirBaseDatos en el procedimiento.

 ¿Cómo?

•	Para importar, exportar o vincular datos entre la base de datos actual de Microsoft Access y un archivo de hoja de cálculo, utilice el método TransferSpreadsheet para ejecutar la acción TransferirHojaCálculo en el procedimiento.

•	Para importar, exportar o vincular datos entre la base de datos actual de Microsoft Access y un archivo de texto, utilice el método TransferText para ejecutar la acción TransferirTexto en el procedimiento.

3	Ejecute el procedimiento.

¿Cómo?

Para obtener más información sobre el método TransferDatabase, haga clic aquí  [image].

Para obtener más información sobre el método TransferSpreadsheet, haga clic aquí  [image].

Para obtener más información sobre el método TransferText, haga clic aquí  [image].


Ver automáticamente los últimos registros de un formulario

Puede ver automáticamente los registros más actuales de un formulario actualizando y consultando nuevamente los registros.

Si utiliza una base de datos compartida en la red, podrá ver la última versión de registros existentes creando un botón de comando que actualice datos de formulario.

Para mostrar el último conjunto de registros de un formulario, incluidos los registros nuevos, puede volver a consultar los registros agregando la acción NuevaConsulta a una macro o agregando el método Requery a un procedimiento de Visual Basic.

¿Qué desea hacer?

Crear un botón de comando que actualice los datos del formulario

Ver automáticamente los últimos registros de un formulario empleando una macro

Ver automáticamente los últimos registros de un formulario empleando Visual Basic para aplicaciones


Ver automáticamente los últimos registros de un formulario utilizando una macro

1	Cree una macro.

¿Cómo?

2	En una fila de acción en blanco, haga clic en NuevaConsulta en la lista de acciones.

Para actualizar registros de un control que se basa en una tabla o una consulta, establezca el argumento Nombre del control al nombre del control. Para actualizar los registros para el formulario completo, deje en blanco el argumento Nombre del control.

3	Haga clic en Guardar  [image]  para guardar la macro.

4	Ejecute la macro.

¿Cómo?

Para obtener más información sobre la acción NuevaConsulta, haga clic aquí  [image].


Ver automáticamente los últimos registros de un formulario utilizando Visual Basic

1	Cree un procedimiento de Visual Basic.

¿Cómo?

2	Agregue el método Requery al procedimiento para el formulario o el control cuyos registros desea actualizar. Por ejemplo, para ver los últimos registros en un cuadro combinado llamado IdCategoría, agregue el método siguiente al procedimiento:

IdCategoría.Requery

3	Ejecute el procedimiento.

¿Cómo?

Para obtener más información sobre el método Requery, haga clic aquí  [image].

Si desea un ejemplo de actualización (nueva consulta) de una lista para ver los datos más actuales, haga clic aquí  [image].


Mostrar un cuadro de mensaje

Cuando desea mostrar un mensaje breve, como una advertencia, puede utilizar un cuadro de diálogo predefinido llamado cuadro de mensaje. Puede mostrar un cuadro de mensaje agregando la acción CuadroMsj a una macro, o agregando la función MsgBox a un procedimiento de Visual Basic.

¿Qué desea hacer?

Mostrar un cuadro de mensaje utilizando una macro

Mostrar un cuadro de mensaje utilizando Visual Basic para aplicaciones


Mostrar un cuadro de mensaje utilizando una macro

1	Cree una macro.

¿Cómo?

2	En una fila de acción en blanco, haga clic en CuadroMsj en la lista de acciones y, a continuación, establezca los argumentos de la acción.

3	Haga clic en Guardar  [image]  para guardar la macro.

4	Ejecute la macro.

¿Cómo?

Para obtener más información sobre la acción CuadroMsj, haga clic aquí  [image].


Mostrar un cuadro de mensaje utilizando Visual Basic

1	Cree un procedimiento de Visual Basic.

¿Cómo?

2	Agregue una instrucción de asignación al procedimiento que asigna el valor devuelto por la función MsgBox a una variable. La función devolverá valores distintos según el botón del cuadro de mensaje en el que el usuario haga clic. A continuación, el procedimiento podrá realizar distintas operaciones según el valor devuelto.

Por ejemplo, la instrucción de asignación siguiente ejecuta la función MsgBox, mostrando un mensaje y asigna el valor devuelto por la función a la variable ValorDevuelto:

ValorDevuelto = MsgBox("¿Continuar?", vbOKCancel)

3	Ejecute el procedimiento.

¿Cómo?

Para obtener información sobre la función MsgBox, haga clic aquí  [image].


Guardar un objeto de base de datos utilizando una macro o un procedimiento de evento

Puede automatizar el proceso de guardar un objeto de base de datos ejecutando una acción Guardar en una macro o un procedimiento de evento.

¿Qué desea hacer?

Guardar un objeto de base de datos utilizando una macro

Guardar un objeto de base de datos utilizando un procedimiento de evento


Guardar un objeto de base de datos utilizando una macro

1	Cree una macro.

¿Cómo?

2	En una fila de acción en blanco, haga clic en Guardar en la lista de acciones y, a continuación, establezca el argumento Tipo de objeto al tipo de objeto que desea guardar y el argumento Nombre del objeto al nombre del objeto.

3	Haga clic en Guardar  [image]  para guardar la macro.

4	Ejecute la macro.

¿Cómo?

Por ejemplo, para guardar un formulario haciendo clic en un botón de comando del formulario, establezca la propiedad AlHacerClic (OnClick) del botón al nombre de la macro.

Para obtener más información sobre la acción Guardar, haga clic aquí  [image].


Guardar un objeto de base de datos utilizando un procedimiento de evento

1	Abra el procedimiento de evento para el evento correspondiente en la ventana Módulo.

¿Cómo?

Por ejemplo, para guardar un formulario haciendo clic en un botón de comando de un formulario, abra el procedimiento de evento Click del botón.

2	Utilice el método Save para ejecutar la acción Guardar del procedimiento, estableciendo el argumento objecttype al tipo de objeto que desea guardar y el argumento objectname al nombre del objeto.

¿Cómo?

3	Ejecute el procedimiento.

¿Cómo?

Para obtener más información sobre la acción Guardar, haga clic aquí  [image].


Llevar a cabo una acción la primera vez que se abre la base de datos

Puede utilizar una macro especial llamada AutoExec para ejecutar una acción o una serie de acciones cuando se abre la base de datos por primera vez. Cuando se abre la base de datos, Microsoft Access busca una macro con este nombre y, si la encuentra, la ejecuta automáticamente.

1	Cree una macro que contenga las acciones que desea ejecutar cuando abra la base de datos.

¿Cómo?

2	Guarde la macro con el nombre AutoExec.

La próxima vez que abra la base de datos, Microsoft Access ejecutará automáticamente esta macro.

Notas

•	Si no desea ejecutar la macro AutoExec cuando abre la base de datos, mantenga presionada la tecla MAYÚS cuando se abra la base de datos.

•	También puede controlar cómo se inicia una base de datos o una aplicación estableciendo opciones en el cuadro de diálogo Inicio (menú Herramientas). Para obtener más información, haga clic aquí  [image].


Asignar una acción o una serie de acciones a una tecla

Puede asignar una acción o un conjunto de acciones a una tecla o una combinación de teclas específica creando un grupo de macros denominado AsignarTeclas. Cuando presione la tecla o la combinación de teclas, Microsoft Access ejecutará la acción.

1	En la ventana de la base de datos, haga clic en la ficha Macros.

2	Haga clic en Nuevo.

3	Haga clic en Nombres de macro  [image]  en la barra de herramientas.

4	En la columna Nombre de macro, escriba la tecla o la combinación de teclas a la que desea asignar la acción o el conjunto de acciones.

Para obtener información sobre las combinaciones de teclas que puede emplear para realizar asignaciones de teclas, haga clic aquí  [image].

5	Agregue la acción o el conjunto de acciones que desea que lleve a cabo la tecla o la combinación de teclas. Por ejemplo, podría agregar una acción EjecutarMacro que ejecute la macro ImprimirRegistroActual al presionar CTRL+R.

6	Repita los pasos 4 y 5 para cualquier otra asignación de teclas que desee realizar.

7	Guarde el grupo de macros con el nombre AsignarTeclas.

Las nuevas asignaciones de teclas tendrán efecto en cuanto guarde el grupo de macros y cada vez que abra la base de datos.

Nota   Si asigna un conjunto de acciones a una combinación de teclas que utiliza Microsoft Access (por ejemplo, CTRL+C es la combinación de teclas para Copiar), las acciones que asigne a esa combinación de teclas sustituirán a la asignación de Microsoft Access.


Combinaciones de teclas automáticas

La tabla siguiente muestra las combinaciones de teclas que puede utilizar para realizar asignaciones de teclas en un grupo de macros AsignarTeclas. Estas combinaciones de teclas son un subconjunto de la sintaxis empleada en la instrucción SendKeys de Visual Basic. Para obtener más información sobre la sintaxis de la instrucción SendKeys, haga clic aquí  [image].

Sintaxis de SendKeys	Combinación de teclas
^A o ^4	CTRL+Cualquier tecla de letra o número
{F1}	Cualquier tecla de función
^{F1}	CTRL+Cualquier tecla de función
+{F1}	MAYÚS+Cualquier tecla de función
{INSERT}	INS
^{INSERT}	CTRL+INS
+{INSERT}	MAYÚS +INS
{SUPR} o {SUPR}	SUPR
^{SUPR} o ^{ SUPR }	CTRL+SUPR
+{SUPR} o +{ SUPR }	MAYÚS+SUPR


Qué es un procedimiento

Un procedimiento es una unidad de código de Visual Basic para aplicaciones. Un procedimiento contiene una serie de instrucciones y métodos que realizan una operación o calculan un valor. Por ejemplo, el siguiente procedimiento de evento usa el método OpenForm para abrir el formulario Pedidos:

Private Sub AbrirPedidos_Click()

DoCmd.OpenForm "Pedidos"

End Sub

Hay dos tipos de procedimientos:

•	Los procedimientos Sub realizan una operación o una serie de operaciones pero no devuelven un valor. Puede crear sus propios procedimientos Sub o usar las plantillas de procedimientos de evento que Microsoft Access crea por usted.

Cada formulario o informe de la base de datos tiene un módulo de formulario o un módulo de informe incorporado que contiene plantillas de procedimientos de evento. Puede agregar código que se ejecute en respuesta a los eventos que se produzcan en el formulario, en el informe o en los controles del formulario o informe. Cuando Microsoft Access reconoce que se ha producido un evento en un formulario, informe o control, ejecuta de forma automática el procedimiento de evento nombrado para el objeto o evento. Por ejemplo, puede escribir un procedimiento de evento que establece el enfoque a un cuadro de texto Nombre esposo cuando el usuario selecciona la casilla de verificación Casado.

Sugerencia   Muchos de los asistentes (por ejemplo, el Asistente para botones de comando) que crean objetos crean también procedimientos de evento para el objeto. Puede mirar estos procedimientos de evento para ver ejemplos de cómo funcionan estos procedimientos.

•	Los procedimientos Function (llamados a menudo simplemente funciones) devuelven un valor, tal como el resultado de un cálculo. Visual Basic incluye muchas funciones incorporadas; por ejemplo, la función Now devuelve la fecha y hora actual. Además de estas funciones incorporadas, puede crear sus propias funciones personalizadas.

Puesto que las funciones devuelven valores, puede usarlas en expresiones. Puede usar funciones en expresiones en muchos lugares de Microsoft Access, incluyendo en una instrucción o método de Visual Basic, en muchos valores de propiedades o en una expresión de criterios en un filtro o consulta.

Éste es un ejemplo de un procedimiento Function, PrimerDíaDelMesSiguiente, que devuelve la fecha del primer día del mes siguiente a la fecha actual:

Function PrimerDíaDelMesSiguiente()

PrimerDíaDelMesSiguiente = _

DateSerial(Year(Now), Month(Now) + 1, 1)

End Function

Esta función personalizada consiste en una única instrucción de asignación que asigna el resultado de una expresión (en el lado derecho del signo igual [=]) al nombre de la función, PrimerDíaDelMesSiguiente (en el lado izquierdo del signo igual). La función calcula el resultado usando las funciones incorporadas de Visual Basic DateSerial, Year, Now y Month.

Una vez haya creado esta función, puede usarla en una expresión prácticamente en cualquier parte de Microsoft Access. Por ejemplo, podría especificar que un cuadro de texto muestre el primer día del mes que sigue a la fecha actual como el valor predeterminado estableciendo la propiedad ValorPredeterminado (DefaultValue) del control del cuadro de texto a la siguiente expresión en la hoja de propiedades:

=PrimerDíaDelMesSiguiente()

Nota   Para usar una función como valor de una propiedad, la función debe estar en el módulo del formulario o del informe, o en un módulo estándar. No se puede usar una función en un módulo de clase que no esté asociada con un formulario o informe como valor de propiedad de formulario o informe.

Los procedimientos Function y Sub pueden aceptar argumentos. Para obtener más información acerca de la utilización de argumentos en Visual Basic, haga clic en  [image].


Creación del primer procedimiento personalizado de Visual Basic

Al extender la base de datos para que incluya los procedimientos de Visual Basic para aplicaciones, puede personalizar la forma en la que las tablas, formularios, informes y consultas de la base de datos trabajan juntos. Hay varios tipos de procedimientos. Puede crear un procedimiento de evento agregando código a las plantillas predefinidas de un módulo de formulario o un módulo de informe. También puede crear sus propios procedimientos Function o procedimientos Sub en módulos estándar o en módulos de clase (que incluyen los módulos de formularios e informes).

Puede llamar a procedimientos en un módulo estándar o en módulo de clase desde expresiones, desde otros procedimientos, procedimientos de evento, procedimientos de otros módulos y macros. Los procedimientos de evento se ejecutan automáticamente en respuesta a eventos, como por ejemplo clics del mouse,  que se producen en un formulario, informe o control.

¿Qué desea hacer?

Crear una función personalizada

Crear un procedimiento Sub personalizado

Crear un procedimiento de evento


Crear una función personalizada

1	Abra un nuevo módulo.

•	Para abrir un nuevo módulo estándar, haga clic en la ficha Módulos en la ventana Base de datos y haga clic en Nuevo. Para abrir un módulo estándar existente, haga clic en la ficha Módulos, seleccione el módulo que desea abrir y haga clic en Diseño.

•	Para abrir un módulo de formulario o un módulo de informe, abra el formulario o informe en la vista Diseño y haga clic en Código  [image]  en la barra de herramientas.

•	Para abrir un nuevo módulo de clase que no esté asociado con un formulario o informe, en la ventana Base de datos haga clic en Módulo de clase en el menú Insertar. Para abrir un módulo de clase existente, haga clic en la ficha Módulos en la ventana Base de datos, seleccione el módulo que desee abrir y haga clic en Diseño.

2	Declare la función escribiendo la instrucción Function.

3	Escriba un nombre de función, seguido inmediatamente por los argumentos de la función entre paréntesis. Por ejemplo, la siguiente declaración de la función EstáCargado especifica cadNombreFormulario como argumento:

Function EstáCargado(cadNombreFormulario As String) As Boolean

4	Agregue el código Visual Basic para aplicaciones que realice la operación o cálculo que desea que realice la función.

Para obtener más información acerca de la instrucción Function, haga clic en  [image].


Crear un procedimiento Sub personalizado

1	Abra un nuevo módulo.

•	Para abrir un nuevo módulo estándar, haga clic en la ficha Módulos de la ventana Base de datos y haga clic en Nuevo. Para abrir un módulo estándar existente, haga clic en la ficha Módulos, seleccione el módulo que desea abrir y haga clic en Diseño.

•	Para abrir un módulo de formulario o un módulo de informe, abra el formulario o informe en la vista Diseño y haga clic en Código  [image]  en la barra de herramientas.

•	Para abrir un nuevo módulo de clase que no está asociado con un formulario o informe, en la ventana Base de datos haga clic en Módulo de clase en el menú Insertar. Para abrir un módulo de clase existente, haga clic en la ficha Módulos en la ventana Base de datos, seleccione el módulo que desea abrir y haga clic en Diseño.

2	Declare el procedimiento escribiendo la instrucción Sub.

3	Escriba un nombre de procedimiento, seguido inmediatamente de los argumentos entre paréntesis. Por ejemplo, la siguiente declaración del procedimineto Sub MostrarEvento especifica (EventName As String) como un argumento:

Sub MostrarEvento(EventName As String)

4	Agregue el código Visual Basic para aplicaciones que realice la operación que desea que realice el procedimiento.

Para obtener más información acerca de la instrucción Sub, haga clic en  [image]. Para obtener más información acerca de la escritura de procedimientos Sub, haga clic en  [image].


Crear un procedimiento de evento

Microsoft Access hace que sea fácil ejecutar código en respuesta a una acción desarrollada por el usuario. Cuando se establece una propiedad del evento para un formulario, informe o control a [Procedimiento de evento], Microsoft Access crea la plantilla del procedimiento de evento. Todo lo que tiene que hacer es agregar el código que desee ejecutar en respuesta a un evento determinado en el formulario, informe o control. Por ejemplo, puede hacer que se ejecute código cuando un usuario hace clic en un botón de comando o cambia los datos.

1	Abra un formulario o informe en la vista Diseño de informe o en la vista Diseño del formulario.

2	Muestra la hoja de propiedades del formulario, informe o una sección o control del formulario o informe.

3	Elija la ficha Eventos.

4	Haga clic en la propiedad de evento del evento que desea que active el procedimiento. Por ejemplo, para mostrar el procedimiento de evento para el evento Change, haga clic en la propiedad Al cambiar.

5	Haga clic en Generar [image] próximo al cuadro de la propiedad para mostrar el cuadro de diálogo Elegir generador.

6	Haga doble clic en Generador de código para mostrar las instrucciones Sub y End Sub del procedimiento de evento en el módulo de formulario o módulo de informe. Estas instrucciones definen o declaran, el procedimiento de evento.

Microsoft Access declara procedimientos de evento de forma automática para cada objeto de un módulo de formulario o informe, usando la palabra clave Private para indicar que al procedimiento sólo pueden tener acceso otros procedimientos de ese módulo.

7	Agregue el código al procedimiento de evento que desee ejecutar cuando se produzca el evento. Por ejemplo, para producir un sonido a través del altavoz de la máquina cuando cambien los datos del cuadro de texto NombreCompañía, agregue una instrucción Beep al procedimiento de evento NombreCompañía_Change, como sigue:

Private Sub NombreCompañía_Change()

Beep

End Sub

El procedimiento de evento se ejecuta cada vez que se produce el evento Change para el objeto.


Acerca de la ejecución de código Visual Basic

El código Visual Basic para aplicaciones se ejecuta en Microsoft Access ejecutando un procedimiento Sub o un procedimiento Function. Los procedimientos contienen una serie de instrucciones y de métodos que realizan una operación o calculan un valor.

Los procedimientos se almacenan en unidades llamadas módulos. Sin embargo, un módulo no se ejecuta; en su lugar, se llama a los procedimientos desde expresiones, otros procedimientos o macros. Los procedimientos de evento de los módulos de formularios o informes se ejecutan también en respuesta a las acciones de los usuarios.

Estas son las formas de ejecutar código Visual Basic en Microsoft Access:

•	Cree un procedimiento de evento. Cuando el usuario realice una acción que provoque ese evento, se ejecuta el procedimiento de evento.

Por ejemplo, puede agregar código al procedimiento de evento Click de un botón de comando para que abra un formulario cuando el usuario haga clic en el botón. Para obtener más información acerca de la creación de un procedimiento de evento, haga clic en  [image].

•	Use una función en una expresión o en el panel Inmediato de la ventana Depuración.

Por ejemplo, puede usar una función en una expresión que defina un campo calculado en un formulario, informe o consulta. Las expresiones se pueden usar como valores de las propiedades en las consultas y filtros, en macros y acciones, en instrucciones y métodos de Visual Basic o en las instrucciones SQL. Para obtener más información acerca de la creación de una función personalizada, haga clic en  [image].

•	Llame a un procedimiento Sub en otro procedimiento o en el panel Inmediato de la ventana Depuración.

Si ejecuta cierto código con frecuencia, puede ponerlo en un procedimiento Sub. En lugar de repetir en cada procedimiento el código Visual Basic que realiza la operación, lo escribe una vez en el procedimiento común y luego llama al procedimiento común cada vez que desee realizar la operación. Para obtener más información acerca de la creación de un procedimiento Sub, haga clic en  [image].

•	Haga clic en el comando Iniciar o continuar en el menú Ejecutar de la ventana Módulo para ejecutar un procedimiento que no requiere argumentos.

En la ventana Módulo, sitúe el cursor en el procedimiento que desee ejecutar. Luego haga clic en Iniciar o continuar en el menú Ejecutar.

•	Lleve a cabo la acción EjecutarCódigo en una macro.

Puede usar la acción EjecutarCódigo para ejecutar una función incorporada de Visual Basic o una función que haya creado. Para ejecutar un procedimiento Sub o un procedimiento de evento, cree una función que llame al procedimiento Sub o procedimiento de evento y luego use la acción EjecutarCódigo para ejecutar la función. Para obtener más información acerca de la acción EjecutarCódigo, haga clic en  [image].


Llevar a cabo una acción de macro en un procedimiento de Visual Basic

Microsoft Access define un objeto especial, DoCmd, que se usa para llevar a cabo las acciones de macro en los procedimientos de Visual Basic para aplicaciones. Una acción se lleva a cabo agregando al procedimiento un método del objeto DoCmd. La mayoría de las acciones tienen un método DoCmd correspondiente.

•	En el procedimiento, agregue el método DoCmd que corresponda a la acción, usando la siguiente sintaxis:

DoCmd.método [argumentos]

Método es el nombre de un método. Argumentos son los argumentos del método, si es que hay alguno.

Por ejemplo, para crear un procedimiento que lleve a cabo la acción AbrirFormulario, agregue el método OpenForm del objeto DoCmd al procedimiento. El siguiente método es equivalente a la acción AbrirFormulario; abre el formulario Productos:

DoCmd.OpenForm "Productos"

Hay unas cuantas acciones que no tienen métodos DoCmd correspondientes, aunque algunas tienen instrucciones o funciones Visual Basic equivalentes. Para obtener una lista de esas acciones y sus equivalentes de Visual Basic, haga clic en  [image].


Acciones de macro que no tienen métodos DoCmd equivalentes

Acción	Equivalente de Visual Basic para aplicaciones
AgregarMenú	No tiene equivalente
CuadroMsj	Función MsgBox
EjecutarAplicación	Función Shell
EjecutarCódigo	Llamada a procedimiento (instrucción Call)
EnviarTeclas	Instrucción SendKeys
EstablecerValor	Instrucción de asignación (instrucción Let)
DetenerTodasMacros	Instrucciones Stop o End
DetenerMacro	Instrucciones Exit Sub o Exit Function


Acerca de la obtención de ayuda sobre Visual Basic

Hay muchas maneras de tener acceso a la Ayuda para obtener respuestas a preguntas acerca de Visual Basic para aplicaciones y para obtener información acerca de las palabras claves de Visual Basic. A continuación se describen unas cuantas de las maneras más comunes y útiles de tener acceso a la Ayuda.

Nota   Si eligió la configuración Típica cuando instaló Microsoft Access, el programa de instalación no instala los temas de ayuda de la referencia del lenguaje para los componentes compartidos entre Microsoft Access y otras aplicaciones. Por ejemplo, Microsoft Access no instala la Ayuda de la referencia del lenguaje para algunas funciones e instrucciones de Visual Basic. Para instalar todos los temas de referencia del lenguaje, ejecute de nuevo el programa de instalación y haga clic en Agregar o quitar. En el cuadro de diálogo Microsoft Office 97 - Mantenimiento, seleccione la casilla de verificación Microsoft Access, haga clic en Modificar opción. En el cuadro de diálogo Microsoft Office 97 - Microsoft Access, seleccione la casilla de verificación Temas de ayuda, haga clic en Modificar opción y luego elija Referencia del lenguaje.

Para tener acceso a la Ayuda, puede:

•	Presionar F1 en un módulo de Visual Basic. Mientras está trabajando en un módulo, puede ir directamente a la Ayuda sobre un método, propiedad, función, instrucción u objeto haciendo clic en la palabra clave de una línea de código y luego presionando F1.

•	Presionar F1 en el Examinador de objetos. Puede usar el Examinador de objetos para ver información acerca de los objetos, propiedades, métodos y constantes. Para obtener información acerca del Examinador de objetos, haga clic en  [image].

•	Preguntar al Ayudante de Office. Para mostrar el globo del ayudante y escribir una entrada, haga clic en el Ayudante de Office en la barra de herramientas o si el ayudante ya se ve pero sin globo, haga clic en el ayudante. El ayudante hace que resulte fácil buscar los temas que está buscando. Simplemente escriba lo que desee hacer y seleccione uno de los temas que sugiera el ayudante. Cuanto más específica sea la tarea, más específicos serán los temas sugeridos. Un ejemplo de una entrada determinada es "Programar mi formulario para actualizar datos automáticamente".

Notas

•	Cuando la ventana Módulo está activa, el Ayudante de Office busca por defecto sólo temas en los archivos de Ayuda sobre programación. Para cambiar este comportamiento predeterminado de forma que busque tanto en la Ayuda sobre programación como en la Ayuda sobre el producto, haga clic con el botón secundario en el Ayudante de Office, haga clic en Opciones y seleccione Buscar ayuda del producto y de programación.

•	Cuando está activa cualquier otra ventana excepto la ventana Módulo, el Ayudante de Office busca sólo en los archivos de Ayuda sobre el producto. La Ayuda sobre acciones y propiedades de Microsoft Access está disponible tanto con la Ayuda sobre programación como con la Ayuda sobre el producto.

•	Usar las fichas Contenido, Índice y Buscar. El cuadro de diálogo Temas de ayuda contiene varias fichas que puede usar para tener acceso a la información de la Ayuda de distintas formas: Para mostrar este cuadro de diálogo, haga clic en Contenido e índice en el menú Ayuda.

•	Haga clic en la ficha Contenido y luego haga doble clic en el libro Referencia de Microsoft Access y Visual Basic para aplicaciones o en el libro Visual Basic para aplicaciones para ver las categorías de la información de referencia, tales como acciones, eventos, funciones, objetos y colecciones, métodos, propiedades e instrucciones. Haga doble clic en un libro de una categoría para ver las listas de los temas de cada categoría.

Para imprimir un tema o libro de temas, seleccione el tema o libro y luego elija Imprimir.

•	Haga clic en la ficha Índice para ver una lista de las entradas del índice para los temas. En el primer libro, escriba las primeras letras o la palabra que está buscando. En el segundo cuadro, haga clic en la entrada del índice que desee y luego haga clic en Mostrar.

Nota   Si hay varios temas que tengan el mismo nombre, el Índice distinguirá el segundo, tercero, etc., mostrando el producto o área del producto al que pertenecen los temas. El primer tema no se identificará por producto o área de producto.

•	Haga clic en la ficha Buscar para hacer una búsqueda de texto completo de una palabra o frase en la Ayuda.

Sugerencias

•	Para cambiar entre la aplicación y la Ayuda de la referencia del lenguaje, presione ALT + TAB o use la barra de tareas de Windows. Si deja activa la Ayuda, puede volver inmediatamente al último tema que estuviera viendo.

•	Para copiar texto seleccionado, cambiar el tamaño de la fuente, imprimir, anotar, mantener visible la ventana Ayuda o usar los colores del sistema para los temas de ayuda, haga clic con el botón secundario en un tema de la Ayuda o use el menú contextual de la Ayuda.


Copia de ejemplos de código de Visual Basic desde la Ayuda a la ventana Módulo

1	Seleccione el código de ejemplo que desea copiar y luego haga clic en el mismo con el botón secundario.

2	En el menú contextual, haga clic en Copiar.

3	Cambie a Microsoft Access.

4	Pegue el ejemplo en el módulo.


Trabajo con objetos en Visual Basic usando el Examinador de objetos

Puede usar el Examinador de objetos para ver y explorar entre los objetos disponibles en Microsoft Access y demás aplicaciones que sean compatibles con Visual Basic para aplicaciones, así como los métodos y propiedades de cada objeto. Cuando localice un método o propiedad en el Examinador de objetos, puede pegarlo en el módulo activo.

¿Qué desea hacer?

Localizar un método o propiedad en el Examinador de objetos

Usar el Examinador de objetos para pegar sintaxis de método o propiedad en un módulo de Visual Basic


Localizar un método o propiedad en el Examinador de objetos

1	Abra cualquier módulo.

2	Haga clic en Examinador de objetos  [image]  en la barra de herramientas.

3	En el cuadro Proyecto/Biblioteca (el cuadro superior izquierdo), haga clic en Access o en otra biblioteca.

4	En el cuadro Clases, haga clic en el objeto en el que esté interesado.

5	En el cuadro Miembros de, haga clic en el método o propiedad que desee.

Nota

•	Para obtener Ayuda sobre la clase, método o propiedad que seleccione, haga clic en Ayuda  [image] en el Examinador de objetos.

•	Para ver objetos proporcionados por la Librería de objetos de Microsoft Access 8.0, tales como objetos barra de comandos, debe establecer una referencia a esta biblioteca. En la ventana Módulo, haga clic en Referencias en el menú Herramientas y seleccione la casilla de verificación Microsoft Office 8.0 Object library.


Use el Examinador de objetos para pegar una sintaxis de método o propiedad en un módulo

1	Seleccione el método o propiedad en el Examinador de objetos.

2	En la sección inferior del Examinador de objetos, seleccione la sintaxis que desee pegar.

3	Haga clic en Copiar a portapapeles  [image]  en el Examinador de objetos.

4	Haga clic en el módulo en el que desee pegar el nombre.

5	Haga clic en Pegar  [image]  en la barra de herramientas.

Microsoft Access pega la sintaxis del método o propiedad en el módulo.

Nota   Después de pegar la sintaxis para procedimientos Sub, es necesario eliminar los paréntesis que rodean los marcadores de posición en la sintaxis.


Cambio de la forma en la que se muestra el código Visual Basic en la ventana Módulo

1	En el menú Herramientas, haga clic en Opciones.

Muéstreme

2	Haga clic en la ficha Módulo.

3	Establezca las opciones apropiadas.

Mediante el establecimiento de opciones en el cuadro de diálogo Opciones, puede cambiar el color, la fuente, el tamaño de la fuente y el ancho de las tabulaciones utilizadas cuando escriba código de Visual Basic para aplicaciones en la ventana Módulo. También puede especificar si se muestra el módulo completo (predeterminado) o si se muestra cada procedimiento individualmente en la ventana Módulo y  establecer varias opciones adicionales para trabajar en la ventana Módulo.

Para obtener más información acerca de una opción, haga clic en Qué es esto  [image]  en la barra de títulos del cuadro de diálogo Opciones y luego elija la opción.


Desactivación de la comprobación de errores del código de Visual Basic

Visual Basic para aplicaciones comprueba de forma automática el código que se introduce en la ventana Módulo para ver si hay errores al escribir. Para desactivar esta característica, haga lo siguiente:

1	En el menú Herramientas, haga clic en Opciones.

Muéstreme

2	Haga clic en la ficha Módulo.

3	Bajo Opciones del código, desactive la casilla de verificación Comprobación de sintaxis automática.


Ignorar el tratamiento de errores en el código de Visual Basic

Cuando agregue una instrucción On Error a un procedimiento de Visual Basic para aplicaciones, Visual Basic se dirige de forma automática a una rutina de tratamiento de errores cuando se produce un error. Puede que desee ignorar el código de tratamiento de errores en algunas circunstancias, por ejemplo, mientras está depurando el procedimiento.

1	En el menú Herramientas, haga clic en Opciones.

Muéstreme

2	Haga clic en la ficha Avanzadas.

3	Bajo Interceptar errores, seleccione la casilla de verificación Modo de interrupción en todos los errores.

Cuando se selecciona esta opción, entra de forma automática en el modo de interrupción cuando se produce un error, sin que importe el tratamiento de errores.


Requerir declaraciones de variables para el código Visual Basic

Visual Basic para aplicaciones no requiere de forma automática que declare explícitamente una variable antes de usarla en un procedimiento. Si usa una variable que no ha sido declarada explícitamente, Visual Basic la declara implícitamente como una variable del tipo de datos Variant.

Aunque las declaraciones implícitas son convenientes, pueden conducir a errores ocultos en el código. Para requerir que las variables sean declaradas antes de ser usadas en un procedimiento, haga lo siguiente:

1	En el menú Herramientas, haga clic en Opciones.

Muéstreme

2	Haga clic en la ficha Módulo.

3	Bajo Opciones del código, seleccione la casilla de verificación Requerir declaración de variables.

Cuando se selecciona la casilla de verificación Declaración de variable requerida, Microsoft Access incluye de forma automática una instrucción Option Explicit en la sección Declaraciones de todos los nuevos módulos de la base de datos, incluyendo los módulos de formularios e informes asociados con los nuevos formularios o informes. Para obtener más información acerca de la instrucción Option Explicit, haga clic en  [image].


Especificación de argumento de línea de comando que puede ser usado en código de Visual Basic

Cuando se inicia Microsoft Access desde la línea de comandos, puede usar la opción /cmd de la línea de comando para especificar un argumento de la línea de comando que pueda ser utilizada en el código de Visual Basic para aplicaciones. Para especificar este argumento después de abrir una base de datos, haga lo siguiente:

1	En el menú Herramientas, haga clic en Opciones.

Muéstreme

2	Haga clic en la ficha Avanzadas.

3	Bajo Sólo la base de datos activa, escriba el argumento del cuadro Argumentos de la línea de comandos.

Para obtener más información acerca de la opción /cmd de la línea de comando, haga clic en  [image].


Depuración de código de Visual Basic

¿Qué desea hacer?

Leer más acerca de la resolución de errores

Usar un punto de interrupción para suspender la ejecución del código

Ir paso a paso por el código línea en línea

Examinar los valores de expresiones y variables usando la ventana Depuración

Controlar los valores de expresiones y variables estableciendo una expresión de inspección

Seguimiento de las llamadas de los procedimientos de Visual Basic

Mostrar el valor de las variables en el panel Locales de la ventana Depuración

Mostrar el valor de una variable o expresión en la ventana Módulo cuando el código está suspendido


Usar un punto de interrupción para suspender la ejecución de código de Visual Basic

Cuando se suspende la ejecución de código de Visual Basic para aplicaciones, el código sigue ejecutándose, aunque está detenido entre instrucciones en ejecución. Mientras está suspendida la ejecución del código puede realizar tareas de depuración tal como comprobar los valores actuales d las variables y ejecutar cada línea de código de línea en línea. Para hacer que Visual Basic detenga la ejecución del código, se pueden establecer puntos de interrupción.

1	En la ventana Módulo, mueva el punto de inserción a la línea de código que todavía no es un punto de interrupción o declaración.

2	Haga clic en Alternar punto de interrupción  [image]  en la barra de herramientas.

Para borrar un punto de interrupción, mueva el punto de inserción a la línea de código en la que se ha establecido el punto de interrupción y luego haga clic en Alternar punto de interrupción  [image]  en la barra de herramientas. Para reiniciar la ejecución del código, haga clic en Iniciar o continuar en el menú Ejecutar.

Nota   También puede suspender la ejecución del código agregando una instrucción Stop a un procedimiento o presionando CTRL+INTERRUMPIR mientras el código está en ejecución.


Ir paso a paso por el código de Visual Basic

Al ir paso a paso por el código de Visual Basic para aplicaciones puede ayudar a identificar donde se está produciendo un error. Puede ver si cada línea de código produce los resultados esperados.

1	Suspenda la ejecución del código.

¿Cómo?

Microsoft Access muestra la línea de código en la que se suspende la ejecución.

2	Haga unas de las siguientes cosas:

•	Para ir paso a paso por cada línea del código y dentro del código a un procedimiento llamado por otro procedimiento, haga clic en Paso a paso por instrucciones  [image]  en la barra de herramientas.

•	Para ir paso a paso por cada línea de código pero ejecutar como una unidad cada procedimiento al que se llame, haga clic en Paso a paso por procedimientos  [image]  en la barra de herramientas.

•	Para ejecutar el código que precede a la línea actual de código y luego detenerse para poder ir paso a paso por cada línea del código, haga clic en Ejecutar hasta el cursor en el menú Depurar.

•	Para ejecutar el resto del procedimiento actual y luego a la siguiente línea de código del procedimiento anterior del árbol de llamadas, haga clic en Paso a paso para salir  [image] en la barra de herramientas.

Note   Puede usar Paso a paso por instrucciones sin suspender la ejecución del código. En la ventana Módulo, sitúe el cursor en el procedimiento por el que desea ir paso a paso y haga clic en Paso a paso por instrucciones [image] en la barra de herramientas.

Se puede alternar entre estos tipos de ejecuciones paso a paso. El tipo de ejecución paso a paso que lleve a cabo depende de las partes del código que desee analizar.


Usar el panel Inmediato en la ventana Depuración mientras trabaja con Visual Basic

Use el panel Inmediato en la ventana Depurar para comprobar los resultados de una línea de código de Visual Basic para aplicaciones. Puede usar el panel Inmediato para comprobar el valor de un control, campo o propiedad; para mostrar el resultado de una expresión; o para asignar un nuevo valor a una variable, campo o propiedad. El panel Inmediato es una especie de ventana de borrador en la que se evalúan inmediatamente las instrucciones, métodos y procedimientos Sub.

1	Si desea usar el panel Inmediato en un cierto punto durante la ejecución del código, suspenda la ejecución del código en ese punto.

¿Cómo?

2	Haga clic en Ventana de depuración  [image]  en la barra de herramientas.

3	Escriba en la ventana una instrucción, método, llamada de procedimiento Function o Sub y luego presione ENTRAR.

Sugerencias

•	Puede ver los resultados de una expresión en el panel Inmediato introduciendo el método Print del objeto Debug, seguido por la expresión. Puede usar un signo de interrogación (?) como abreviación del método Print. Por ejemplo, Visual Basic muestra el valor devuelto por la función personalizada PrimerDíaDelMesSiguiente si introduce algunas de las dos líneas siguientes en el panel Inmediato:

Debug.Print PrimerDíaDelMesSiguiente()

? PrimerDíaDelMesSiguiente()

También puede agregar el método Print del objeto Debug al código de Visual Basic para mostrar los valores o los resultados de las expresiones del panel Inmediato mientras se ejecuta el código. Cuando el código haya finalizado la ejecución, puede mirar los resultados.

•	En Microsoft Access puede mostrar el panel Inmediato en cualquier momento presionando CTRL+G.


Establecimiento de una expresión de inspección en el código de Visual Basic

Cuando se suspende la ejecución de código de Visual Basic para aplicaciones, puede observar los valores de las expresiones de inspección en el panel Inspección de la ventana Depuración. También puede realizar una inspección rápida para ver el valor de una expresión que no haya sido especificada como una expresión de inspección.

¿Qué desea hacer?

Agregar una expresión de inspección al panel Inspección de la ventana Depuración

Realizar una inspección rápida


Agregar una expresión de inspección al panel Inspección de la ventana Depuración

1	Abra un procedimiento en la ventana Módulo.

2	En el menú Depurar, haga clic en Agregar inspección.

3	Si ya seleccionó una expresión en la ventana Módulo, se mostrará de forma automática en el cuadro de diálogo. Si no se muestra ninguna expresión, escriba la expresión que desee evaluar. La expresión puede ser una variable, una propiedad, una llamada de función o cualquier otra expresión válida.

En lugar de escribir la expresión, puede seleccionar una expresión en la ventana Módulo y arrastrarla al panel Inspección.

4	Para seleccionar el intervalo en el que se evaluará la expresión, seleccione un contexto de módulo y de procedimiento bajo Contexto.

Nota   Seleccione el alcance mínimo que se ajuste a sus necesidades. Si se seleccionan todos los procedimientos o todos los módulos podría ralentizar la ejecución del código.

5	Para definir la forma en la que el sistema debe responder a la expresión de inspección, seleccione una opción bajo Tipo de inspección.

•	Para mostrar el valor de la expresión de inspección, haga clic en Expresión de inspección.

•	Para detener la ejecución si la expresión se evalúa a True, haga clic en Modo de interrupción cuando el valor sea Verdadero.

•	Para detener la ejecución si cambia el valor de la expresión, haga clic en Modo de interrupción cuando el valor cambie.

Cuando ejecuta el código, el panel Inspección muestra el valor de la expresión que se hubiera establecido. Para modificar una expresión de inspección, seleccione la expresión en el panel Inspección y luego haga clic en Modificar inspección en el menú Herramientas. Para eliminar la expresión de inspección, haga clic en Eliminar en el cuadro de diálogo Modificar inspección.


Realizar una inspección rápida mientras se depura código de Visual Basic

1	Suspenda la ejecución del código Visual Basic para aplicaciones.

¿Cómo?

2	Seleccione la expresión cuyo valor desea ver.

3	Haga clic en Inspección rápida  [image]  en la barra de herramientas.

Microsoft Access muestra el cuadro de diálogo Inspección rápida, en el que puede ver la expresión y el valor actual de la expresión. Haga clic en Agregar en el cuadro de diálogo para agregar la expresión a la lista de expresiones de inspección del panel Inspección de la ventana Depurar.


Seguimiento de llamadas de procedimientos de Visual Basic mientras se depura código de Visual Basic

Cuando se suspende la ejecución de código de Visual Basic para aplicaciones mientras se depura el código, puede usar el cuadro de diálogo Llamadas para ver una lista de los procedimientos que hayan sido iniciados pero no completados.

1	Suspenda la ejecución del código de Visual Basic.

¿Cómo?

2	Haga clic en Pila de llamadas  [image]  en la barra de herramientas.

Microsoft Access muestra el último procedimiento llamado en la parte superior de la lista, seguido del procedimiento llamado anteriormente y así sucesivamente. Para mostrar la instrucción que llama al siguiente procedimiento de la lista, haga clic en Mostrar.


Acerca del trabajo con datos y objetos de bases de datos usando código de Visual Basic

Además de trabajar con datos y objetos tal como formularios e informes en la interfaz de Microsoft Access, puede usar Visual Basic para aplicaciones para escribir procedimientos que crean, eliminan y modifican datos y objetos dinámicamente. Por ejemplo, puede escribir un procedimiento que coloque un título en un formulario o que cambia el color de un campo en un formulario cuando un usuario realiza una acción determinada.

Se puede hacer referencia a los datos y objetos directamente en el código o declarar variables de objeto que los represente. Una vez se declare y se asigne una variable de objeto, puede usarla exactamente como lo haría con el nombre del objeto al que representa y puede cambiar su valor, exactamente como puede cambiar el valor de cualquier variable.

Por ejemplo, el siguiente procedimiento Sub crea una tabla, Pedidos antiguos, con un único campo, IdPedido:

Sub CreateTable ()

' Declarar variables.

Dim dbs As Database, tbl As TableDef, fld As Field

' Asignar base datos activa a variable base de datos.

Set dbs = CurrentDB

' Crear nueva tabla y campo y asignarlos

' a variables de tabla y campo.

Set tbl = dbs.CreateTableDef("Pedidos antiguos")

Set fld = tbl.CreateField("IdPedido", dbText)

' Agregar campo a tabla y luego agregar la tabla

' a la base de datos.

tbl.Fields.Append fld

dbs.TableDefs.Append tbl

dbs.TableDefs.Refresh

End Sub

Microsoft DAO proporciona los objetos, tal como tablas, consultas, relaciones, e índices, que controlan las tareas de administración de datos en una base de datos de Microsoft Access. Estos objetos se llaman objetos de acceso a datos. Se puede compartir código de Visual Basic que utilice objetos de acceso a datos con otras aplicaciones que usan Microsoft DAO, como por ejemplo Microsoft Excel.

Además, Microsoft Access define una variedad de objetos que puede usar para trabajar con los datos, tal como formularios, informes y controles.

Para obtener más información acerca del trabajo con los objetos de acceso a datos, haga clic en  [image]  o consulte el capítulo 5, "Trabajo con objetos y colecciones", en Creación de aplicaciones con Microsoft Access 97.


Conversión de macros a Visual Basic

Microsoft Access puede convertir automáticamente macros a procedimientos de evento o módulos de Visual Basic para aplicaciones que realicen acciones equivalentes usando código de Visual Basic. Se puede convertir las macros de un formulario o informe, o convertir macros generales que no estén asociados a un formulario o informe determinado.

¿Qué desea hacer?

Convertir macros de un formulario o informe

Convertir macros generales


Convertir macros de un formulario o informe a Visual Basic

1	Abra el formulario o informe en la vista Diseño del informe o en la vista Diseño del formulario.

2	Apunte a Macro en el menú Herramientas y luego haga clic en Convertir macros del formulario a Visual Basic o en Convertir macros del informe a Visual Basic.


Convertir macros generales a Visual Basic

1	En la ventana Base de datos, haga clic en la ficha Macros.

2	Haga clic en el nombre de la macro que desea convertir.

3	En el menú Archivo, haga clic en Guardar como o exportar.

4	En el cuadro de diálogo Guardar como, haga clic en Guardar como módulo de Visual Basic.


Utilización de argumentos en Visual Basic

Un argumento ofrece información adicional a un procedimiento, instrucción o método. Cuando se crea un procedimiento Function o procedimiento Sub, se declaran argumentos si desea poder suministrar información al procedimiento cuando se le llama.

Cuando se llama a un procedimiento que tenga argumentos, se especifican los argumentos que se desea pasarle. También se pueden especificar argumentos para muchas instrucciones y métodos.

¿Qué desea hacer?

Crear una función personalizada

Crear un procedimiento Sub

Especificar argumentos cuando use un procedimiento, instrucción o método


Especificar argumentos cuando use un procedimiento, instrucción o método en código Visual Basic

•	Especifique los argumentos inmediatamente después del nombre del procedimiento, instrucción o método. Para un procedimiento Function o un método que devuelva un valor, encierre los argumentos entre paréntesis. Si especifica más de un argumento, sepárelos con una coma.

Por ejemplo, el siguiente método Close del objeto DoCmd cierra el formulario Agregar productos. Acepta dos argumentos, acForm y "Agregar productos":

DoCmd.Close acForm, "Agregar productos"

Puesto que el método Close no devuelve un valor, los argumentos no se incluyen entre paréntesis.

Sugerencia   Puede usar el Examinador de objetos para pegar sintaxis de métodos o propiedades, incluyendo argumentos, en el código de Visual Basic para aplicaciones. El Examinador de objetos pega los argumentos con nombre que puede especificar en cualquier orden. Puede usar estos argumentos con nombre o substituirlos con argumentos estándar. Para obtener más información acerca de la utilización del Examinador de objetos, haga clic en  [image]. Para obtener más información acerca de la utilización de argumentos con nombre, haga clic en  [image].


Resolución de errores en código de Visual Basic

La depuración es un proceso que se utiliza para buscar y resolver errores o bugs, en el código de Visual Basic para aplicaciones. Hay tres tipos de errores que puede encontrar mientras se ejecuta el código:

•	Los errores en tiempo de compilación se producen como resultado de un código construido incorrectamente. Puede que se haya olvidado de igualar los pares de instrucciones (como por ejemplo If y End If o For y Next) o puede tener un error de programación que viole las reglas de Visual Basic (tal como una palabra mal escrita, la falta de un separador o un error de no coincidencia de tipos).

Los errores en tiempo de compilación incluyen también los errores de sintaxis, que son errores gramaticales o de puntuación. Estos incluyen paréntesis que no coinciden o un número incorrecto de argumentos pasados a una función.

•	Los errores en tiempo de ejecución se producen después de que la aplicación inicie su ejecución. Entre los ejemplos de errores en tiempo de ejecución se incluyen las operaciones ilegales, tal como dividir por cero o escribir a un archivo que no existe.

•	Los errores lógicos se producen cuando la aplicación no realiza lo que se pretendía y produce resultados incorrectos.

Para ayudarle a aislar los tres tipos de errores y para controlar cómo se ejecuta el código, Visual Basic proporciona herramientas de depuración que permiten ir paso a paso por el código de línea en línea, examinar o controlar los valores de las expresiones y variables y hacer el seguimiento de las llamadas de los procedimientos.

Nota   Para utilizar la mayoría de las herramientas de depuración de Microsoft Access, es necesario suspender la ejecución del código. Para obtener más información, haga clic en


Usar la ventana Módulo, la ventana Depuración o el Examinador de objetos

¿Qué desea hacer?

Aprender más acerca de la ventana Módulo

Aprender más acerca de la ventana Depuración

Aprender más acerca del Examinador de objetos


Creación de un módulo de clase que no está asociado con un formulario o informe

1	En la ventana Base de datos o en la ventana Módulo, haga clic en Módulo de clase en el menú Insertar.

Aparece un módulo de clase en blanco.

2	Agregue al módulo las declaraciones y procedimientos que desee.

3	Para guardar el módulo, haga clic en Guardar  [image]  en la barra de herramientas, y especifique un nombre para el módulo de clase en el cuadro de diálogo Guardar como.

Después de guardar por primera vez el módulo de clase, su nombre se enumera en la ficha Módulos de la ventana Base de datos, y puede abrir el módulo de clase haciendo clic en Diseño.

Para obtener información acerca de la utilización de módulos de clase, haga clic en  [image]. Además, consulte el capítulo 2, "Introducción a Visual Basic", y el capítulo 5, "Trabajo con objetos y colecciones", en Creación de aplicaciones con Microsoft Access 97.


Mostrar información de la sintaxis en la ventana Módulo

1	En el menú Herramientas, haga clic en Opciones.

2	Haga clic en la ficha Módulo.

3	Bajo Opciones del código, asegúrese de que está seleccionada la casilla de verificación Información rápida automática.

Cuando la casilla de verificación Información rápida automática está seleccionada, Microsoft Access muestra información de la sintaxis en la ventana Módulo. Cuando escriba un método o el nombre de un procedimiento existente seguido de un espacio o abrir paréntesis, aparece una sugerencia de forma automática que da información de la sintaxis acerca del método o procedimiento, tal como los argumentos que debe especificar.


Mostrar el valor de una variable o expresión en la ventana Módulo cuando el código está suspendido

1	En el menú Herramientas, haga clic en Opciones.

2	Haga clic la ficha Módulo.

3	Bajo Opciones del código, asegúrese que está seleccionada la casilla de verificación Sugerencias de datos automáticas.

Cuando la casilla de verificación Sugerencias de datos automáticas está seleccionada, puede comprobar el valor de una variable o una expresión mientras el código está suspendido. Sitúe el puntero del mouse sobre una variable o expresión para que se muestre su valor actual.


Presentación del valor de las variables en el panel Locales de la ventana Depuración

1	Suspenda la ejecución del código de Visual Basic para aplicaciones.

¿Cómo?

2	Haga clic en la Ventana de depuración  [image]  en la barra de herramientas.

En la parte superior de la ventana Depurar, en la ficha Locales, Microsoft Access muestra de forma automática el nombre, valor actual y tipo de todas las variables y objetos del procedimiento activo. Los valores del panel Locales se actualizan cada vez que suspende la ejecución del código. Puede cambiar el valor de una variable en el panel Locales seleccionando el valor existente e introduciendo el nuevo valor.


Presentación de una lista de objetos, propiedades y métodos relevantes en la ventana Módulo

1	En el menú Herramientas, haga clic en Opciones.

2	Haga clic en la ficha Módulo.

3	Bajo Opciones del código, asegúrese que está seleccionada la casilla de verificación Lista de miembros automática.

Cuando la casilla de verificación Lista de miembros automática está seleccionada, Microsoft Access le ayuda a completar las instrucciones mientras está escribiendo código de Visual Basic para aplicaciones. Cuando escribe el nombre de un objeto, seguido de un espacio o abrir paréntesis, Microsoft Access muestra una lista de los objetos, propiedades y métodos relevantes que pudieran seguir al nombre del objeto. Hay varias teclas que puede usar para introducir un elemento de la lista en la línea actual de código.

Tecla	Efecto
TAB	Introduce el elemento
Barra espaciadora	Introduce el elemento seguido de un espacio
ENTRAR	Introduce el elemento y mueve el cursor a la siguiente línea
Nota   Para hacer que desaparezca la lista, presione ESC.


Solución de problemas en los módulos de Visual Basic

¿Sobre qué necesita ayuda?

¿Cómo encuentro los problemas que se producen en mi código de Visual Basic para aplicaciones?

El argumento criterios de una función DBúsq (DLookup) o de otra función agregada de dominio produce resultados inesperados.

Cuando ejecuto el código, Microsoft Access muestra mensajes que no deseo ver.

¿Cómo agrego un registro nuevo a una tabla desde Visual Basic para aplicaciones?

Mi procedimiento produce resultados inesperados cuando utilizo uno de los métodos Find.

Quiero comprobar si funciona mi procedimiento Function o Sub.

Obtengo el mensaje "Sub o Function sin definir" cuando intento usar la función EstáCargado.

Obtengo el mensaje "No se encontró el método o miembro de datos" cuando intento hacer referencia a un campo de tabla en el código.

¿Cómo puedo usar Visual Basic para aplicaciones para cambiar la instrucción SQL base de una consulta?


Cuando ejecuto el código, Microsoft Access muestra mensajes que no deseo ver

Puede desactivar temporalmente la presentación de avisos y otros mensajes mientras se ejecuta el código de Visual Basic para aplicaciones utilizando el método SetWarnings para ejecutar la acción EstablecerAdvertencias. También puede utilizar el método SetWarnings para volver a activar la presentación de mensajes. Para obtener más información, haga clic aquí  [image].


¿Cómo puedo usar Visual Basic para agregar un nuevo registro a una tabla?

Desde un programa, puede agregar un registro nuevo a una tabla o conjunto de resultados utilizando los métodos AddNew y Update del objeto Recordset. Para obtener más información, haga clic aquí  [image]  o consulte el capítulo 9, "Trabajar con registros y campos", en Creación de aplicaciones con Microsoft Access 97.


Mi procedimiento produce resultados inesperados cuando uso uno de los métodos Find

Los métodos FindFirst, FindLast, FindNext y FindPrevious pueden producir resultados inesperados por alguna de estas razones:

•	El argumento criterios especificado utiliza una sintaxis incorrecta para hacer referencia al valor de un control o propiedad. Para obtener más información acerca de cómo hacer referencia al valor de un control, haga clic aquí  [image].

•	El argumento criterios especificado utiliza una sintaxis incorrecta para combinar el valor de un campo, control o propiedad con una cadena literal. Para obtener más información acerca de cómo utilizar valores en expresiones, haga clic aquí  [image].

Los métodos FindRecord y FindNext pueden producir resultados inesperados si el argumento onlycurrentfield del método FindRecord está establecido a acCurrent. Use el método GoToControl para desplazar el enfoque al control que contenga los datos que desea buscar antes utilizar el método FinRecord o FindNext.


Deseo comprobar si funciona mi procedimiento Function o Sub

Puede utilizar el panel Inmediato de la ventana Depuración para comprobar el resultado de un procedimiento Function o Sub. Por ejemplo, para ver el valor que devuelve la función PrimerDíaDelMesSiguiente, escriba un signo de interrogación seguido de un espacio, el nombre de la función y los argumentos encerrados entre paréntesis.

? PrimerDíaDelMesSiguiente(Now)

Para obtener más información, haga clic aquí  [image].


Obtengo el mensaje "Sub o Function sin definir" cuando intento usar la función EstáCargado

La función EstáCargado es un procedimiento Function de ejemplo incluido en la base de datos de ejemplo Neptuno y no una función propia de Visual Basic para aplicaciones. Para utilizar la función EstáCargado en su base de datos, primero abra la base de datos de ejemplo Neptuno, copie la función e insértela en un módulo de su base de datos.

Para obtener información acerca de cómo abrir la base de datos de ejemplo Neptuno, haga clic aquí  [image].


Obtengo el mensaje "No se encontró el método o miembro de datos" cuando intento hacer referencia a un campo de tabla en el código

Microsoft Access presenta este error si utiliza el operador . (punto) en vez del operador ! para hacer referencia directamente al campo de una tabla. Por ejemplo, este error se produce en la última línea del siguiente bloque de código de Visual Basic para aplicaciones.

Dim dbsActual As Database

Dim tblPrueba As TableDef

Dim fldPrueba As Field

Set dbsActual = CurrentDb

Set tblPrueba = dbsActual.TableDefs("Categorías")

Set fldPrueba = tblPrueba.IdDeCategoría

Para corregir el problema, sustituya el operador . (punto) por el operador ! para hacer referencia al campo como un elemento de la colección Fields. Puede utilizar cualquiera de las siguientes líneas de código, aunque con la primera se obtiene mejor rendimiento:

Set fldPrueba = tblPrueba!IdDeCategoría

Set fldPrueba = tblPrueba.Fields("IdDeCategoría")

Para obtener más información acerca de cómo utilizar los operadores . (punto) y !, haga clic aquí  [image].


¿Cómo puedo usar Visual Basic para cambiar la instrucción SQL base de una consulta?

Puede usar la propiedad SQL de un objeto QueryDef para cambiar la instrucción SQL base de una consulta. Por ejemplo, el siguiente bloque de código de Visual Basic para aplicaciones cambia la instrucción SQL base de la consulta ListaEmpleados para que la consulta seleccione todos los registros de la tabla Empleados:

Dim dbsActual As Database

Dim qryPrueba As QueryDef

Set dbsActual = CurrentDb

Set qryPrueba = dbsActual.QueryDefs("Lista_Empleados")

qryPrueba.SQL = "SELECT * FROM Empleados;"

Para obtener más información acerca de la propiedad SQL, haga clic aquí  [image].


Optimizar el rendimiento del código de Visual Basic

A menudo, la mejor forma de mejorar la velocidad del código de Visual Basic para aplicaciones es elegir una estrategia más eficiente. Sin embargo, ciertas técnicas pueden ayudarle a hacer que su código se ejecute más rápido.

•	Asegúrese de que está compilado el código de la base de datos. En la ventana Módulo, elija Compilar y guardar todos los módulos en el menú Depurar.

Nota   Asegúrese de volver a compilar el código después de cambiar el nombre a un archivo de base de datos. Si cambia el nombre de una base de datos se deshace la compilación del código de la base de datos.

•	Declare siempre las variables explícitamente. Puede hacer que las variables se declaren explícitamente antes de que se usen en un procedimiento estableciendo la opción Declaración de variable requerida en la ficha Módulo del cuadro de diálogo Opciones. Para obtener más información, haga clic aquí  [image].

•	Utilice el tipo más específico posible al declarar variables. Por ejemplo, declare una variable que vaya a representar un formulario como tipo Form en vez de Object o Variant.

•	Utilice variables para hacer referencia a propiedades, control y objetos de acceso a datos. Si hace referencia más de una vez al valor de una propiedad o control de un formulario o a un objeto de acceso a datos o su propiedad, cree variables de objeto y haga referencia a las variables en vez de utilizar identificadores completos.

•	Utilice la palabra clave Me para las referencias al formulario en un procedimiento de evento.

•	Utilice la función SiInm (IIf) con prudencia. Evite el uso de la función SiInm (IIf) si alguna de las expresiones tarda mucho tiempo en evaluarse.

•	Utilice funciones de cadena cuando sea adecuado. Use las funciones $ (por ejemplo, la función Str$) cuando trabaje con cadenas y las funciones sin $ cuando trabaje con Variant u otros tipos de datos.

•	Utilice los tipos Entero o Largo para cálculos matemáticos siempre que sea posible.

•	Utilice matrices dinámicas y la instrucción Erase o ReDim para recuperar memoria.

•	Utilice constantes siempre que sea posible.

•	Utilice marcadores para una reubicación rápida. Use marcadores en vez del método FindNext o cualquier otro medio para volver a un registro determinado.

•	Utilice los métodos FindRecord y FindNext en campos indexados. Estos métodos son mucho más eficientes cuando se usan en un campo indexado.

•	Organice los módulos. Visual Basic carga los módulos según se requieren, es decir, carga un módulo en memoria sólo cuando el código llama a un procedimiento de ese módulo. Colocar los procedimientos afines en el mismo módulo hace que Visual Basic cargue los módulos adicionales sólo cuando se necesiten.

•	Elimine el código inútil y las variables sin usar. Conforme vaya desarrollando y modificando las aplicaciones, puede dejar procedimientos que no son llamados desde ninguna parte del código o variables declaradas que no se utilizan. Revise el código para buscar y eliminar los procedimientos y variables sin usar.

Para obtener más información, consulte el capítulo 13, "Optimizar las aplicaciones", en Creación de aplicaciones con Microsoft Access para Windows 95.


Contenido de Microsoft Office 97, edición Developer (ODE)

Microsoft Office 97, edición Developer (ODE) proporciona herramientas avanzadas que los programadores pueden usar para crear y distribuir aplicaciones personalizadas.

La ODE incluye:

Microsoft Office 97, CD edición Professional

Microsoft Office 97, CD edición Developer Tools

•	Una licencia de distribución y herramientas libres de derechos de autor (que incluye la aplicación en tiempo de ejecución Microsoft Graph) que permite distribuir copias de las aplicaciones personalizadas de Microsoft Office a todos sus usuarios.

•	Un Asistente para instalación mejorado que puede usar para la creación automática de discos y la compresión de archivos para la distribución de aplicaciones.

•	Una nueva versión del Administrador de réplicas que puede usar para programar las actualizaciones entre las réplicas, determinar qué objetos de la base de datos han sido replicados, ver una presentación visual de todas las réplicas del conjunto y administrar conjuntos de múltiples réplicas de una vez.

•	El componente Control de código de origen de Access para compatibilidad de múltiples programadores. (Microsoft Visual SourceSafe se vende por separado).

•	Controles ActiveX que puede usar para agregar versatilidad a las aplicaciones y duplicar las funcionalidades de Microsoft Windows 95, incluyendo los nuevos controles para las aplicaciones Internet.

•	Visor API de Windows, que contiene las declaraciones y constantes utilizadas con la interfaz de programación de aplicaciones (API) de Windows 95. Estas declaraciones y constantes se pueden copiar y pegar a sus módulos de Visual Basic.

•	Windows Help Workshop para desarrollar Ayuda para las aplicaciones.

•	Microsoft Office Developer Sampler, con contenido relacionado con Office de la red de Microsoft Developer.

Documentación impresa

•	Manual del programador de Visual Basic / Microsoft Office 97

•	Creación de aplicaciones con Microsoft Access 97


Restringir los datos a un subconjunto de registros

Al trabajar con registros, a menudo tendrá que restringir los datos a un conjunto de registros específico. Algunos procedimientos toman como argumento un criterio que permite especificar los datos que se desea obtener. Por ejemplo, el argumento criterio se especifica al utilizar funciones agregadas de dominio para restringir los registros devueltos. También puede especificar criterios al utilizar los métodos de búsqueda de un objeto Recordset, al establecer la propiedad Filtro (Filter) de un formulario, o al formar una instrucción SQL. Aunque en cada una de estas operaciones la sintaxis es diferente, en todas ellas la expresión de criterio se crea de forma similar.

Por ejemplo, puede usar la función DSuma (DSum), que es una función agregada de dominio, para calcular la suma de todos los costes de transporte de la tabla Pedidos. Puede crear un control calculado introduciendo la expresión siguiente en la propiedad OrigenDelControl (ControlSource):

=DSuma("[Transporte]", "Pedidos")

Si especifica el argumento criterio opcional, la función DSuma (DSum) sólo se ejecutará sobre un subconjunto de dominio. Por ejemplo, puede calcular la suma de los costes de transporte de la tabla Pedidos, pero sólo para los pedidos que se envían a California:

=Dsuma("[Transporte]", "Pedidos", "[RegiónEnvío] = 'CA'")

Al suministrar el argumento criterio, Microsoft Access evalúa primero las expresiones incluidas en el argumento para formar una expresión de cadena. Esta expresión se traslada a la función agregada de dominio. La expresión de cadena es equivalente a una cláusula WHERE de SQL sin la palabra WHERE.

Puede especificar criterios numéricos, de texto o de fecha/hora. No importa el tipo de criterio que especifique, el argumento criterio siempre se convertirá en una cadena antes de trasladarlo a la función agregada de dominio. Por ello, deberá asegurarse de que una vez evaluadas las expresiones, todas las partes del argumento se concatenen para formar una sola cadena, que estará en su totalidad entre comillas dobles (").

Tenga cuidado al formar criterios para asegurarse de que la cadena quede formada correctamente.

La lista de temas siguiente indica las distintas formas en que se pueden especificar los criterios:

Expresiones de criterio numéricas

Expresiones de criterio de texto

Expresiones de criterio de fecha y hora

Cambiar el criterio numérico de un control de un formulario

Cambiar el criterio de texto de un control de un formulario

Cambiar el criterio de fecha y hora de un control de un formulario

Usar múltiples campos en las expresiones de criterio


Expresiones de criterio numéricas

Para especificar criterios numéricos para una operación, suministre un valor numérico como parte de la expresión de cadena que forma el argumento criterio.

Suponga que va a ejecutar la función DBúsq (DLookup) en la tabla Empleados para buscar los apellidos de un empleado en particular, y desea utilizar el valor del campo IdEmpleado en el argumento criterio de la función. Puede construir un argumento criterio como el del ejemplo siguiente, en el que se obtienen los apellidos del empleado cuyo valor de IdEmpleado es 7:

=DBúsq("[Apellidos]", "Empleados", "[IdEmpleado] = 7")


Expresiones de criterio de texto

Para especificar criterios de texto para una operación, incluya una cadena de texto como parte de la expresión de cadena que forma el argumento criterio. Esta cadena deberá indicarse entre comillas simples (').

Nota   Las comillas simples indican a Microsoft Access que el argumento criterio contiene una cadena dentro de otra.

Suponga que va a utilizar el método FindFirst de DAO para encontrar la primera aparición de unos apellidos en la tabla Empleados. Puede usar el argumento criterio como en el ejemplo siguiente, que sitúa el puntero de registro actual en el primer registro en el que el apellido de un empleado es Buchanan. Observe que la cadena literal Buchanan se especifica entre comillas simples, y que la cadena completa que contiene al argumento criterio debe ir entre comillas dobles (").

Dim dbs As Database, rst As Recordset

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("Empleados", dbOpenDynaset)

rst.FindFirst "[Apellidos] = 'Buchanan'"


Expresiones de criterio de fecha y hora

Para especificar criterios de fecha y hora para una operación, indique un valor de fecha u hora como parte de la expresión de cadena que forma el argumento criterio. Este valor debe indicarse entre símbolos (#).

Nota   El signo de número indica a Microsoft Access que el argumento criterio contiene una fecha o una hora dentro de una cadena.

Suponga que va a crear un filtro para que el formulario Empleados muestre los registros de todos los empleados nacidos el 1 de enero de 1960 o después. Podría formar el argumento criterio para la propiedad Filtro (Filter) del formulario como en el siguiente ejemplo. Observe la colocación de los símbolos .

Forms!Empleados.Filter = "[FechaNacim] >= #1-1-60#"


Criterios numéricos basados en un control de un formulario

Si desea cambiar el argumento criterio de una operación basándose en una decisión del usuario, puede hacer que el criterio provenga de un control de un formulario. Por ejemplo, puede especificar que el argumento criterio proviene de un cuadro de texto que contiene el número IdEmpleado.

Para especificar criterios numéricos que provienen de un control de un formulario, puede incluir en el argumento criterio una expresión que haga referencia al control. Esta expresión deberá ser independiente de la expresión de cadena para que Microsoft Access la evalúe en primer lugar, y luego la concatene con el resto de la cadena antes de realizar la operación correspondiente.

Suponga que va a ejecutar la función DBúsq (DLookup) en la tabla Empleados para buscar los apellidos de un empleado partiendo de su número IdEmpleado. En el ejemplo siguiente, el criterio se determina con el valor actual del control IdEmpleado del formulario Pedidos. La expresión que hace referencia al control se evalúa cada vez que se llama a la función, de modo que si el valor del control cambia, el argumento criterio lo reflejará.

=DBúsq("[Apellidos]", "Empleados", "[IdEmpleado] = " & Formularios!Pedidos!IdEmpleado)

Si el valor actual del campo IdEmpleado es 7, el argumento criterio que se envía a la función DBúsq (DLookup) será:

"[IdEmpleado] = 7"

Sugerencia   Para localizar errores en la expresión del argumento criterio, divídala en componentes más pequeños y compruebe independientemente cada uno de ellos en la ventana Depuración. Cuando todos los componentes funcionen correctamente, vaya agregándolos uno a uno hasta que toda la expresión sea correcta.

También puede especificar una variable que represente un valor numérico en el argumento criterio. Dicha variable deberá ser independiente de la expresión de cadena, para que Microsoft Access la evalúe primero y luego la concatene al resto de la expresión.

En el ejemplo siguiente se indica la forma de construir un argumento criterio que incluye una variable:

Dim entNum As Integer, varResult As Variant

entNum = 7

varResult = DLook("[Apellidos]", "Empleados", _

"[IdEmpleado] = " & entNum)


Criterios de texto basados en un control de un formulario

Si desea modificar el argumento criterio para una operación basándose en una acción del usuario, puede hacer que el criterio provenga de un control de un formulario. Por ejemplo, puede especificar que el argumento criterio proviene de un cuadro de lista que contiene los apellidos de los empleados de la tabla Empleados.

Para especificar criterios de texto provenientes de un control de un formulario, en el argumento criterio debe incluir una expresión que haga referencia a dicho control. Esta expresión debe ser independiente de la expresión de cadena, para que Microsoft Access la evalúe primero y luego la concatene al resto de la expresión de cadena antes de realizar la operación correspondiente.

Además de indicar toda la expresión de cadena entre comillas dobles ("), debe asegurarse de que el criterio de texto se encuentra dentro de la expresión de cadena entre comillas simples ('). Se deben especificar las comillas para las cadenas que incluyen la expresión que hace referencia al control del formulario.

Nota   Las comillas simples indican a Microsoft Access que el argumento criterio contiene una cadena dentro de otra.

El ejemplo siguiente hace una búsqueda en la tabla Empleados y obtiene la región en la que vive un empleado a partir de su apellido. El criterio viene determinado por el valor actual de un control cuadro de lista llamado Apellidos, en el formulario Empleados. Observe la ubicación de las comillas simples.

=DBúsq("[Región]", "Empleados", "[Apellidos] = '" & Formularios!Empleados!Apellidos & "'")

Si el valor actual del control es Montes, cuando Microsoft Access evalúe la expresión y concatene las cadenas pasará a la función DBúsq (DLookup) la siguiente expresión:

"[Apellidos] = 'Montes'"

Tenga en cuenta que la cadena completa que contiene el argumento criterio debe ir entre comillas dobles después de haber concatenado las cadenas.

Sugerencia   Para localizar errores en la expresión del argumento criterio, divídala en componentes más pequeños y compruebe independientemente cada uno de ellos en la ventana Depuración. Cuando todos los componentes funcionen correctamente, vaya agregándolos uno a uno hasta que toda la expresión sea correcta.

También puede especificar una variable que represente una cadena de texto en el argumento criterio. Dicha variable deberá ser independiente de la expresión de cadena, para que Microsoft Access la evalúe primero y luego la concatene al resto de la expresión. La cadena de texto deberá ir entre comillas simples o dobles.

El ejemplo siguiente muestra la forma de construir un argumento criterio que incluye una variable que representa una cadena de texto:

Dim cadApellidos As String, varResult As Variant

cadApellidos = "Montes"

varResult = DLook("[IdEmpleado]", "Empleados", "[Apellidos] = '" & cadApellidos & "'")


Criterios de fecha y hora basados en un control de un formulario

Si desea cambiar el argumento criterio de una operación basándose en una decisión del usuario, puede hacer que el criterio provenga de un control de un formulario. Por ejemplo, puede especificar que el argumento criterio proviene de un cuadro de lista que contiene fechas de pedidos de la tabla Pedidos.

Para especificar criterios de fecha y hora provenientes de un control de un formulario, incluya en el argumento criterio una expresión que haga referencia al control del formulario. Esta expresión deberá ser independiente de la expresión de cadena para que Microsoft Access la evalúe primero y luego la concatene con el resto de la expresión de cadena antes de realizar la operación correspondiente.

Además de indicar toda la expresión entre comillas dobles ("), también debe asegurarse de que el criterio de fecha u hora aparece en la expresión de cadena entre símbolos #. Estos signos deben incluirse en las cadenas que incluyen la expresión que hace referencia al control del formulario.

Nota   Los símbolos  indican a Microsoft Access que el argumento criterio contiene una fecha o una hora dentro de una cadena.

En el ejemplo siguiente se establece la propiedad Filtro (Filter) de un formulario basándose en un criterio que proviene de un control del formulario llamado FechaContrato. Observe la ubicación de los símbolos .

Forms!Empleados.Filtro = "[FechaContrato] >= #" & 	Forms!Empleados!FechaContrato & "#"

Forms!Empleados.FilterOn = True

Si el valor actual del control FechaContrato es 1-5-92, la propiedad Filtro (Filter) tendrá el siguiente argumento criterio:

"[FechaContrato] >= #1-5-92#"

Sugerencia   Para localizar errores en la expresión del argumento criterio, divídala en componentes más pequeños y compruebe independientemente cada uno de ellos en la ventana Depuración. Cuando todos los componentes funcionen correctamente, vaya agregándolos uno a uno hasta que toda la expresión sea correcta.

También puede especificar una variable que represente un valor de fecha u hora en el argumento criterio. Dicha variable deberá ser independiente de la expresión de cadena, para que Microsoft Access la evalúe primero y luego la concatene al resto de la expresión. El criterio de fecha u hora debe ir entre símbolos .

En el ejemplo siguiente se muestra cómo construir un argumento criterio que incluye una variable que representa una fecha:

Dim datFechaContrato As Date

datFechaContrato = #1-5-92#

Forms!Empleados.Filter = "[FechaContrato] >= #" & _

datFechaContrato & "#"


Usar múltiples campos en las expresiones de criterio

Es posible especificar varios campos en un argumento criterio.

Para ello, debe asegurarse de que las distintas expresiones de cadena se concatenan correctamente para formar una cláusula WHERE de SQL  válida. En una cláusula WHERE de SQL con varios campos, es posible combinar éstos con una de las palabras clave AND, OR o NOT. La expresión que especifique debe dar como resultado una cadena que incluya alguna de estas palabras clave.

Por ejemplo, suponga que desea establecer la propiedad Filtro (Filter) del formulario Empleados de modo que muestre registros que satisfagan dos criterios. En el ejemplo siguiente se filtra el formulario para que sólo muestre los empleados cuyo puesto es "Representante de ventas" y que fueron contratados después del 1 de enero de 1993:

Dim datFechaContrato As Date, cadPuesto As String

datFechaContrato = #1/1/93#

cadPuesto = "Representante de ventas"

Forms!Empleados.Filter = "[FechaContrato] >= #" & _

datFechaContrato & "# AND [Puesto] = '" & cadPuesto & "'"

Forms!Empleados.FilterOn = True

El argumento criterio da como resultado la cadena siguiente:

"[FechaContrato] >= #1-1-93# AND [Puesto] = 'Representante de ventas'"

Sugerencia   Para localizar errores en la expresión del argumento criterio, divídala en componentes más pequeños y compruebe independientemente cada uno de ellos en la ventana Depuración. Cuando todos los componentes funcionen correctamente, vaya agregándolos uno a uno hasta que toda la expresión sea correcta.


Usar comillas en las cadenas

Si va a formar cadenas que se van a concatenar más adelante, es posible que tenga que incluir una cadena dentro de otra, o una variable de cadena dentro de una cadena. Éstas son algunas situaciones en las que puede tener que anidar una cadena dentro de otra:

•	Al especificar criterios para funciones agregadas de dominio.

•	Al especificar criterios para los métodos Find.

•	Al especificar criterios para la propiedad Filtro (Filter) de un formulario.

•	Al formar cadenas SQL.

En todos estos casos, Microsoft Access debe trasladar una cadena al motor de base de datos Microsoft Jet. Al especificar un argumento criterio para una función agregada de dominio, por ejemplo, Microsoft Access debe evaluar las variables, concatenarlas en una cadena y luego enviarla al motor de base de datos Jet.

Si se incluye una variable numérica, Microsoft Access la evalúa y simplemente concatena el resultado a la cadena. Sin embargo, si la variable es una cadena de texto, la cadena de criterio resultante contendrá una cadena dentro de otra. Para identificar una cadena dentro de otra es necesario emplear delimitadores de cadena. En caso contrario, el motor de base de datos Jet no podrá determinar qué parte de la cadena es el valor que se desea usar.

En realidad, los delimitadores de cadena no son parte de la variable en sí, pero hay que incluirlos en la cadena del argumento criterio. Puede utilizar comillas simples (') o dobles ("). Hay tres formas distintas de construir la cadena del argumento criterio. Cada método da como resultado un argumento criterio con el aspecto de uno de los dos ejemplos siguientes:

"[Apellidos] = 'Torres'"

o

"[Apellidos] = "Torres""

Comillas simples

Debe escribir comillas simples en el argumento criterio de forma que cuando el valor de la variable se concatene a la cadena, quede incluido entre las comillas simples. Por ejemplo, suponga que el argumento criterio debe contener una variable de cadena llamada cadNombre. Puede formar el argumento criterio como en el ejemplo siguiente:

"[Apellidos] = '" & cadNombre & "'"

Cuando la variable cadNombre se evalúe y concatene a la cadena de criterio, ésta quedará de la siguiente forma:

"[Apellidos] = 'Torres'"

Nota   Esta sintaxis no permite el uso de apóstrofes (') dentro del valor de la variable. Si en el valor de la variable de cadena hay un apóstrofe, Microsoft Access generará un error en tiempo de ejecución. Si la variable puede contener valores con apóstrofes, considere emplear alguna de las formas de sintaxis expuestas en las secciones siguientes.

Comillas dobles

Debe escribir las comillas dobles en el argumento criterio de forma que cuando se evalúe el valor de la variable, quede entre las comillas. En una cadena, deberá utilizar dos pares de comillas dobles para representar un solo par. Así, puede formar el argumento criterio como en el ejemplo siguiente:

"[Apellidos] = """ & cadNombre & """"

Cuando la variable cadNombre se evalúa y concatena con el argumento criterio, cada par de comillas dobles se sustituye por una sola comilla simple. Entonces el argumento criterio queda de la siguiente forma:

"[Apellidos] = 'Torres'"

Esta sintaxis puede parecer más compleja que la de las comillas simples, pero permite incluir cadenas que contengan apóstrofes en el argumento criterio. También permite anidar una o más cadenas dentro de la cadena anidada.

Escribir una variable que representa las comillas

Puede crear una variable de cadena que represente las comillas dobles y concatenarla al argumento criterio junto con el valor de la variable. La representación ANSI de la comilla doble es Car$(34). Puede asignar este valor a una variable de cadena llamada cadComilla, y luego formar el argumento criterio como en el ejemplo siguiente:

"[Apellidos] = " & cadComilla & cadNombre & cadComilla

Cuando las variables se evalúen y se concatenen al argumento criterio, éste quedará así:

"[Apellidos] = "Torres""


Especificaciones de Microsoft Access

¿Qué desea hacer?

Leer acerca de especificaciones de bases de datos

Leer acerca de especificaciones de tablas

Leer acerca de especificaciones de consultas

Leer acerca de especificaciones de formularios e informes

Leer acerca de especificaciones de macros


Especificaciones de bases de datos

Atributo	Máximo
Tamaño de archivo de base de datos (.mdb)	1 gigabyte. Sin embargo, debido a que la base de datos puede incluir tablas de otros archivos, su tamaño total sólo está limitado por la capacidad de almacenamiento disponible.
Número de objetos en una base de datos	32.768
Módulos (incluyendo formularios e informes con la propiedad TieneUnMóduloAsociado (HasModule) establecida a True)	1024
Número de caracteres en un nombre de objeto	64
Número de caracteres en una contraseña	14
Número de caracteres en un nombre de usuario o de grupo	20
Número de usuarios que pueden tener acceso a la vez	255


Especificaciones de tablas

Atributo	Máximo
Número de caracteres en un nombre de tabla	64
Número de caracteres en un nombre de campo	64
Número de campos en una tabla	255
Número de tablas abiertas	1.024. El número real puede ser menor debido a tablas que abre Microsoft Access internamente.
Tamaño de tabla	1 gigabyte
Número de caracteres en un campo de texto	255
Número de caracteres en un campo memo	65.535 cuando se introducen datos desde la interfaz de usuario;  1 gigabyte cuando se introducen datos mediante código.
Tamaño de un campo objeto OLE	1 gigabyte
Número de índices en una tabla	32
Número de campos en un índice	10
Número de caracteres en un mensaje de validación	255
Número de caracteres en una regla de validación	2.048
Número de caracteres en una descripción de tabla o campo	255
Número de caracteres en un registro (sin incluir los campos memo y objeto OLE)	2.000
Número de caracteres en la configuración de una propiedad	255


Especificaciones de consultas

Atributo	Máximo
Número de relaciones forzadas	32 por tabla menos el número de índices que hay en la tabla para campos o combinaciones de campos que no forman parte de las relaciones
Número de tablas en una consulta	32
Número de campos en un conjunto de registros	255
Tamaño de un conjunto de registros	1 gigabyte
Límite para ordenar	255 caracteres en uno o más campos
Número de niveles de consultas anidadas	50
Número de caracteres en una celda de la cuadrícula de diseño de consulta	1.024
Número de caracteres para un parámetro en una consulta de parámetros	255
Número de AND en una cláusula WHERE o HAVING	40
Número de caracteres en una instrucción SQL	aproximadamente 64.000


Especificaciones de formularios e informes

Atributo	Máximo
Número de caracteres en una etiqueta	2.048
Número de caracteres en un cuadro de texto	65.535
Ancho de formulario o informe	22 pulgadas (55,87 cm)
Alto de sección	22 pulgadas (55,87 cm)
Alto de todas las secciones más los encabezados de sección (en la vista Diseño)	200 pulgadas (508 cm)
Número de niveles de formularios o informes anidados	3
Número de campos o expresiones que se pueden ordenar o agrupar en un informe	10
Número de encabezados y pies en un informe	1 encabezado/pie de informe; 1 encabezado/pie de página; 10 encabezados/pies de grupo
Número de páginas impresas en un informe	65.536
Número de controles y secciones que puede agregar a lo largo de la vida del formulario o del informe	754


Especificaciones de macros

Atributo	Máximo
Número de acciones en una macro	999
Número de caracteres en una condición	255
Número de caracteres en un comentario	255
Número de caracteres en un argumento de acción	255


Función DDE

Puede usar la función DDE para iniciar una conversación de intercambio dinámico de datos (DDE) con otra aplicación, solicitar un elemento de información de esa aplicación y presentar la información en un control de un formulario o un informe.

Por ejemplo, puede usar la función DDE en la propiedad OrigenDelControl (ControlSource) de un cuadro de texto para mostrar datos de una celda concreta de una hoja de cálculo de Microsoft Excel.

Sintaxis

DDE(aplicación, tema, elemento)

La función DDE tiene los siguientes argumentos:

Argumento	Descripción
aplicación	Expresión de cadena que identifica a una aplicación que puede tomar parte en una conversación DDE. Normalmente, aplicación será el nombre de un archivo .exe (sin la extensión .exe) cuando se trate de una aplicación basada en Microsoft Windows, como es el caso de Microsoft Excel. Por ejemplo, para iniciar una conversación DDE con Microsoft Excel, escriba "Excel" como argumento aplicación.
Tema	Expresión de cadena con el nombre de un tema que reconoce la otra aplicación. A menudo, el argumento tema es un archivo de documento o de datos. En la documentación de la otra aplicación encontrará una lista de temas posibles.
Elemento	Expresión de cadena con el nombre de un elemento de datos que reconoce la otra aplicación. En la documentación de la otra aplicación encontrará una lista de elementos posibles.
Comentarios

La función DDE intenta iniciar una conversación DDE con la aplicación y el tema especificados, y solicita los datos indicados en elemento. Si tiene éxito, la función DDE devuelve una cadena con la información solicitada.

Si solicita datos de Microsoft Excel, el elemento podría ser un identificador de fila y columna, como por ejemplo "F1C1" o el nombre de un intervalo de celdas. En el ejemplo siguiente, la función DDE solicita la información contenida en la fila 1, columna 1 de una hoja de cálculo de Microsoft Excel. Puede introducir esta expresión como propiedad OrigenDelControl (ControlSource) de un control cuadro de texto en la hoja de propiedades del control:

=DDE("Excel", "Hoja1", "F1C1")

Sólo puede usar la función DDE en la propiedad OrigenDelControl (ControlSource) de un cuadro de texto, grupo de opciones, casilla de verificación o cuadro combinado. No es posible llamarla desde Visual Basic.

Al utilizar la función DDE, el control pasa a ser de sólo lectura en la vista Formulario y en Vista preliminar. Por ejemplo, si usa la función DDE en un cuadro de texto, no podrá editar el texto que contiene. Para modificarlo deberá hacerlo en la otra aplicación. Como la propiedad OrigenDelControl (ControlSource) es de sólo lectura en la vista Formulario y en la Vista preliminar, los cambios en el control tienen que hacerse en la vista Diseño.

El número máximo de conversaciones DDE que puede haber abiertas simultáneamente lo determinan Microsoft Windows y la memoria y recursos del sistema. Si la conversación no puede iniciarse debido a que la otra aplicación no está en ejecución o no reconoce el tema, o por haberse alcanzado el número máximo de conversaciones, la función DDE devolverá el valor Nulo.

Nota   La otra aplicación puede estar configurada de modo que ignore las peticiones de entablar una conversación DDE. En este caso, la función DDE devolverá el valor Nulo. Del mismo modo, puede hacer que Microsoft Access ignore las peticiones de otras aplicaciones. Para ello, elija Opciones en el menú Herramientas, y en la ficha Avanzadas del cuadro de diálogo Opciones, en Operaciones DDE, seleccione Ignorar peticiones de DDE.

Sugerencia   Si tiene que manipular los objetos de otra aplicación desde Microsoft Access, puede ser conveniente el uso de la Automatización.

La tabla siguiente ilustra la forma en que la función DDE se comporta cuando se usa con cada uno de los controles:

Control	Comentarios
Cuadro de texto	El argumento elemento puede contener texto o números. Si elemento se refiere a más de un dato, como por ejemplo un intervalo con nombre de una hoja de cálculo de Microsoft Excel que contenga varias celdas. la función DDE obtendrá la primera entrada. Puede utilizar esta función con un cuadro de texto para mostrar los datos contenidos en una celda de la hoja de cálculo.
Cuadro combinado	La función DDE llena el cuadro combinado con la información indicada en elemento. No es posible introducir información en el componente de texto del cuadro. Puede usar la función DDE con un cuadro combinado para mostrar una lista de regiones o países que se mantiene en una hoja de cálculo de Microsoft Excel.
Grupo de opciones	La propiedad ValorDeLaOpción (OptionValue) de cada botón de opción de un grupo de opciones tiene establecido un número. Normalmente, el valor del primer botón es 1, el del segundo 2, etcétera. El número que devuelve la función DDE determinará el botón de opción seleccionado. Por ejemplo, si la función DDE devuelve el valor 2, se seleccionará el segundo botón. Si la función devuelve un valor que no concuerda con ninguno de los de la propiedad ValorDeLaOpción (OptionValue), no se seleccionará ningún botón. Si elemento se refiere a más de un elemento de información, como por ejemplo un intervalo con nombre de una hoja de cálculo de Microsoft Excel que contenga varias celdas, la función DDE devolverá la primera entrada.
Casilla de verificación	Si la función DDE devuelve el valor 0, la casilla de verificación estará sin marcar. Si devuelve un número distinto de cero, como 1 o –1, se seleccionará la casilla. Si el elemento se refiere a más de un elemento de información, como por ejemplo un intervalo con nombre de una hoja de cálculo de Microsoft Excel que contenga varias celdas, la casilla de verificación no estará disponible.


Función DDEEnviar (DDESend)

Puede usar la función DDEEnviar (DDESend) para iniciar una conversación de intercambio dinámico de datos (DDE) con otra aplicación y enviar un elemento de información a esa aplicación desde un control de un formulario o informe.

Por ejemplo, puede emplear la función DDEEnviar (DDESend) en la propiedad OrigenDelControl (ControlSource) de un cuadro de texto para enviar los datos que contiene a una celda concreta de una hoja de cálculo de Microsoft Excel.

Sintaxis

DDEEnviar(aplicación, tema, elemento, datos)

La función DDEEnviar (DDESend) tiene los argumentos siguientes:

Argumento	Descripción
aplicación	Expresión de cadena que identifica a una aplicación que puede tomar parte en una conversación DDE. Normalmente, aplicación será el nombre de un archivo .exe (sin la extensión .exe) cuando se trate de una aplicación basada en Microsoft Windows, como es el caso de Microsoft Excel. Por ejemplo, para iniciar una conversación DDE con Microsoft Excel, escriba "Excel" como argumento aplicación.
tema	Expresión de cadena con el nombre de un tema que reconoce la otra aplicación. A menudo, el argumento tema es un archivo de documento o de datos. En la documentación de la otra aplicación encontrará una lista de temas posibles.
elemento	Expresión de cadena con el nombre de un elemento de datos que reconoce la otra aplicación. En la documentación de la otra aplicación encontrará una lista de elementos posibles.
datos	Cadena o expresión que contiene los datos a enviar a la otra aplicación.
Comentarios

La función DDEEnviar (DDESend) intenta iniciar una conversación DDE con la aplicación y el tema especificados, e identifica elemento como el elemento que va a recibir los datos. Por ejemplo, si la otra aplicación es Microsoft Excel, tema podría ser "Hoja1", y elemento un identificador de fila y columna, como "F1C1", o el nombre de un intervalo de celdas.

El argumento datos especifica la información que se desea enviar. Puede ser una cadena literal, como "Informe preparado por Juan", o una expresión que contenga el resultado de una función que cree una cadena, como por ejemplo "Preparado el " & Fecha(). Si elemento se refiere a más de un elemento de información, como en el caso de un intervalo con nombre de una hoja de cálculo de Microsoft Excel que contenga varias celdas, la función DDEEnviar (DDESend) enviará los datos a la primera entrada.

En el ejemplo siguiente, la función DDEEnviar (DDESend) envía la cadena "Algún texto" a la celda situada en la Fila 1, Columna 1 de una hoja de cálculo de Microsoft Excel. Puede escribir esta expresión en el cuadro de la propiedad OrigenDelControl (ControlSource) de un control cuadro de texto en su hoja de propiedades:

=DDEEnviar("Excel", "Hoja1", "F1C1", "Algún texto")

Suponga que desea enviar datos de un control dependiente de un formulario de Microsoft Access a una celda de una hoja de cálculo de Microsoft Excel. La propiedad OrigenDelControl (ControlSource) del control dependiente ya contiene un nombre de un campo o una expresión. Puede crear otro cuadro de texto o cuadro combinado y establecer en su propiedad OrigenDelControl (ControlSource) una expresión que incluya la función DDEEnviar (DDESend), y especificar en ella como argumento datos el nombre del control dependiente. Por ejemplo, si tiene un cuadro de texto dependiente llamado Apellidos, puede crear otro cuadro de texto y establecer lo siguiente en su propiedad OrigenDelControl (ControlSource):

=DDEEnviar("Excel", "Hoja1", "F1C1", [Apellidos])

Este control intermedio debe ser un cuadro de texto o un cuadro combinado. No puede emplearse el nombre de un control dependiente como argumento datos de una casilla de verificación ni de un grupo de opciones.

Sólo puede utilizarse la función DDEEnviar (DDESend) en la propiedad OrigenDelControl (ControlSource) de un cuadro de texto, de un grupo de opciones, de una casilla de verificación o de un cuadro combinado de un formulario. No es posible llamarla desde Visual Basic.

Al utilizar la función DDEEnviar (DDESend), el control pasa a ser de sólo lectura en la vista Formulario y en Vista preliminar. Como la propiedad OrigenDelControl (ControlSource) también es de sólo lectura en la vista Formulario y en la Vista preliminar, las modificaciones en el control deben hacerse en la vista Diseño.

El número máximo de conversaciones DDE que puede haber abiertas simultáneamente lo determinan Microsoft Windows y la memoria y recursos del sistema. Si la conversación no puede iniciarse debido a que la otra aplicación no está en ejecución o no reconoce el tema, o por haberse alcanzado el número máximo de conversaciones, la función DDEEnviar (DDESend) devolverá el valor Nulo.

Nota   La otra aplicación puede estar configurada de modo que ignore las peticiones de entablar una conversación DDE. En este caso, la función DDEEnviar (DDESend) devolverá el valor Nulo. Del mismo modo, puede hacer que Microsoft Access ignore las peticiones de otras aplicaciones. Para ello, elija Opciones en el menú Herramientas, y en la ficha Avanzadas del cuadro de diálogo Opciones, en Operaciones DDE, seleccione Ignorar peticiones de DDE.

Sugerencia   Si tiene que manipular los objetos de otra aplicación desde Microsoft Access puede encontrar conveniente utilizar la Automatización.

La tabla siguiente ilustra la forma en que se comporta la función DDEEnviar (DDESend) con cada uno de los controles:

Control	Comentarios
Cuadro de texto o cuadro combinado	Como el cuadro de texto o combinado aparece en blanco en la vista Formulario y en la Vista preliminar, puede encontrar conveniente establecer Falso en su propiedad Visible. El argumento datos puede referirse a otro control. En el ejemplo siguiente se indica la forma de enviar el contenido de un control llamado Apellidos a una hoja de cálculo de Microsoft Excel: =DDEEnviar("Excel", "Hoja1", "F1C1", [Apellidos])
Grupo de opciones	Ninguno de los botones de opción del grupo está seleccionado en la vista Formulario y en la Vista preliminar. Puede ser conveniente hacer invisible el grupo de opciones (y sus botones) estableciendo Falso en su propiedad Visible. El argumento datos debe contener datos numéricos, como por ejemplo "2". Si no es numérico, la función DDEEnviar (DDESend) no enviará la información y elemento no se modificará.
Casilla de verificación	La casilla de verificación aparece atenuada en la vista Formulario y en la Vista preliminar. Puede ser conveniente hacerla invisible estableciendo Falso en su propiedad Visible. El argumento datos debe contener datos numéricos, como por ejemplo "2". Si no es numérico, la función DDEEnviar (DDESend) no enviará la información y elemento no se modificará.


Uso de Microsoft Access como servidor DDE

Microsoft Access permite usar la técnica de intercambio dinámico de datos (DDE) ya sea como aplicación destino (cliente), ya sea como aplicación origen (servidor). Por ejemplo, una aplicación como Microsoft Word, que actúa como cliente, puede solicitar datos mediante DDE a una base de datos de Microsoft Access que actúa como servidor.

Sugerencia   Si necesita manipular objetos de Microsoft Access desde otra aplicación, considere la posibilidad de usar Automatización.

Una conversación DDE entre un cliente y un servidor se establece sobre un determinado tema. Un tema puede ser un archivo de datos en el formato admitido por la aplicación servidor o puede ser el tema Sistema, que proporciona información sobre la propia aplicación servidor. Una vez comenzada una conversación sobre un tema en concreto, sólo puede transferirse un elemento de datos asociado a ese tema.

Por ejemplo, si usted está ejecutando Microsoft Word y desea insertar en un documento datos almacenados en una determinada base de datos de Microsoft Access. Una conversación DDE con Microsoft Access se inicia abriendo un canal DDE con la función DDEIniciar (DDEInitiate) y especificando como tema el nombre del archivo de base de datos. A continuación, podrá transferir datos de esa base de datos a Microsoft Word a través de dicho canal.

Como servidor DDE, Microsoft Access admite los siguientes temas:

•	Tema System

•	El nombre de una base de datos (tema baseDeDatos)

•	El nombre de una tabla (tema nombreDeTabla)

•	El nombre de una consulta (tema nombreDeConsulta)

•	Una cadena SQL de Microsoft Access (tema cadenaSQL)

Una vez establecida una conversación DDE, puede usar la instrucción DDEExecute para enviar a la aplicación servidor un comando procedente de la aplicación cliente. Cuando se usa como servidor DDE, Microsoft Access reconoce como comando válido uno de los siguientes elementos:

•	El nombre de una macro existente en la base de datos abierta actualmente.

•	Cualquier acción que pueda ejecutar en Visual Basic utilizando uno de los métodos del objeto DoCmd.

•	Las acciones AbrirBaseDeDatos y CerrarBaseDeDatos, que sólo se usan para operaciones DDE. (Para un ejemplo de cómo usar estas acciones, consulte el ejemplo proporcionado más adelante en este tema).

Nota   Cuando especifique una acción de macro como una instrucción DDEExecute, la acción y todos sus argumentos deberán seguir la sintaxis propia del objeto DoCmd y deberán especificarse entre corchetes ([ ]). Sin embargo, las aplicaciones que admiten DDE no reconocen las constantes intrínsecas en las operaciones DDE. Además, si la cadena contiene una coma, deberá escribir entre signos de comillas tipográficas ("") los argumentos de dicha cadena. Si la cadena no contiene ninguna coma, no es necesario especificar los signos de comillas tipográficas.

La aplicación cliente puede usar la función DDEPedido (DDERequest) para solicitar datos de texto de la aplicación servidor a través de un canal DDE abierto. O bien, el cliente puede usar la instrucción DDEPoke para enviar datos a la aplicación servidor. Una vez finalizada la transferencia de datos, el cliente puede usar la instrucción DDETerminate para cerrar el canal DDE o la instrucción DDETerminateAll para cerrar todos los canales abiertos.

Nota   Cuando la aplicación cliente termine de recibir datos a través de un canal DDE, debe cerrar ese canal para conservar los recursos de memoria.

El siguiente ejemplo muestra la forma de crear un procedimiento de Microsoft Word con Visual Basic que use Microsoft Access como servidor DDE. (para que este ejemplo funcione, deberá estar ejecutando Microsoft Access).

Sub AccessDDE()

Dim intChan1 As Integer, intChan2 As Integer

Dim strQueryData As String

' Usar el tema System, abrir la base de datos NEPTUNO.MDB.

' Debe abrir la base de datos para poder usar otros temas DDE.

intChan1 = DDEInitiate("MSAccess", "System")

' Puede que necesite cambiar esta ruta de acceso para que apunte

' a la ubicación actual de la base de datos NEPTUNO.MDB.

DDEExecute intChan1, "[OpenDatabase C:\Access\Ejemplos\Neptuno.mdb]"

' Obtener todos los datos de consulta Diez productos más caros.

intChan2 = DDEInitiate("MSAccess", "NEPTUNO.mdb;" _

& "QUERY Diez productos más caros")

strQueryData = DDERequest(intChan2, "All")

DDETerminate intChan2

' Cerrar la base de datos.

DDEExecute intChan1, "[CloseDatabase]"

DDETerminate intChan1

' Imprimir datos recuperados en ventana Depurar.

Debug.Print strQueryData

End Sub

Si desea información acerca del uso de Microsoft Access como cliente DDE, consulte el capítulo 11, "Comunicarse con otras aplicaciones", en Creación de aplicaciones con Microsoft Access 97.

Las siguientes secciones proporcionan información sobre los temas DDE válidos permitidos por Microsoft Access.

El tema System

El tema System es un tema estándar para todas las aplicaciones basadas en Windows, y devuelve información sobre los temas que admite la aplicación. Para tener acceso a esta información, el código debe llamar primero a la función DDEIniciar (DDEInitiate) con "System" como tema, y a continuación ejecutar la instrucción DDEPedido (DDERequest) con uno de los siguientes elementos como argumento elemento.

Elemento	Devuelve
SysItems	Lista de elementos que admite el tema System en Microsoft Access.
Formats	Lista de los formatos que Microsoft Access puede copiar en el Portapapeles.
Status	"Busy" o "Ready".
Topics	Lista de todas las bases de datos abiertas.
El ejemplo siguiente muestra el uso de las funciones DDEIniciar (DDEInitiate) y DDEPedido (DDERequest) con el tema System:

' En Visual Basic, iniciar una conversación DDE con Microsoft Access.

Dim intChan1 As Integer, strResults As String

intChan1 = DDEInitiate("MSAccess", "System")

' Solicitar la lista de temas que admite el tema System.

strResults = DDERequest(intChan1, "SysItems")

' Ejecutar la acción AbrirBaseDeDatos para abrir NEPTUNO.mdb.

' Puede que sea necesario cambiar esta ruta de acceso para que apunte

' a la ubicación actual de la base de datos Neptuno.

DDEExecute intChan1, "[OpenDatabase C:\Access\ejemplos\Neptuno.mdb]"

El tema baseDeDatos

El tema baseDeDatos es el nombre de archivo de una base de datos existente. Puede escribir únicamente el nombre de la base de datos (NEPTUNO) o bien puede escribir su ruta completa y la extensión .mdb (C:\access\ejemplos\neptuno.mdb). Después de iniciar una conversación DDE con la base de datos, podrá solicitar una lista de los objetos almacenados en dicha base de datos.

Nota No puede usar DDE para consultar el archivo de información de grupo de trabajo de Microsoft Access.

El tema baseDeDatos admite los siguientes elementos.

Elemento	Devuelve
TableList	Una lista de tablas.
QueryList	Una lista de consultas.
FormList	Una lista de formularios.
ReportList	Una lista de informes.
MacroList	Una lista de macros.
ModuleList	Una lista de módulos.
El siguiente ejemplo muestra cómo abrir el formulario Empleados de la base de datos Neptuno desde un procedimiento Visual Basic:

' En Visual Basic, iniciar una conversación DDE con

' con la base de datos Neptuno.

' Asegurarse de que la bases de datos está abierta.

intChan2 = DDEInitiate("MSAccess", "Neptuno")

' Solicitar la lista de los formularios de Neptuno.

strResponse = DDERequest(intChan2, "FormList")

' Ejecutar la acción AbrirFormulario, con argumentos para abrir el

' formulario Empleados.

DDEExecute intChan2, "[OpenForm Empleados,0,,,1,0]"

Los temas TABLE nombreDeTabla, QUERY nombreDeConsulta, y SQL cadenaSQL

Estos temas usan la siguiente sintaxis:

nombreBaseDeDatos; TABLE nombreDeTabla

nombreBaseDeDatos; QUERY nombreDeConsulta

nombreBaseDeDatos; SQL [cadenaSQL]

Parte	Descripción
nombreBaseDeDatos	Nombre de la base de datos a la que pertenece la tabla o la consulta, o a la que se aplica la instrucción SQL, seguido de un signo de punto y coma (;). Este nombre puede ser simplemente el nombre de la base de datos (Neptuno), o bien puede ser su ruta completa y la extensión .mdb (C:\Access\Ejemplos\Neptuno.mdb).
nombreDeTabla	Nombre de una tabla existente.
nombreDeConsulta	Nombre de una consulta existente.
cadenaSQL	Instrucción SQL válida, de 256 caracteres como máximo, que termina con un signo de punto y coma. Si desea intercambiar más de 255 caracteres, deberá omitir este argumento y usar en su lugar sucesivas instrucciones DDEPoke para crear una instrucción SQL. Por ejemplo, el siguiente código de Visual Basic usa la instrucción DDEPoke para crear una instrucción SQL y, a continuación, solicita el resultado de la consulta.
	intChan1 = DDEInitiate("MSAccess", "Neptuno;SQL") DDEPoke intChan1, "SQLText", "SELECT *" DDEPoke intChan1, "SQLText", " FROM Pedidos" DDEPoke intChan1, "SQLText", " WHERE [Gastos de envío] > 100;" strResponse = DDERequest(intChan1, "NextRow") DDETerminate intChan1
En la siguiente tabla se muestran los elementos válidos para los temas TABLE nombreDeTabla, QUERY nombreDeConsulta, y SQL cadenaSQL.

Elemento	Devuelve
All	Todos los datos de la tabla, incluyendo los nombres de los campos.
Data	Todas las filas de datos, sin incluir los nombres de los campos.
FieldNames	Una lista, de una sola fila, de los nombres de campos.
FieldNames;T	Una lista de dos filas con los nombres de campos (primera fila) y sus tipos de datos (segunda fila).
	Estos son los valores que devuelve este elemento, así como los tipos de datos que representan:
	Valor	Tipo de datos
	0	No válido
	1	True/False (no-Nulo)
	2	Byte sin signo
	3	Entero de 2 bytes con signo (Entero)
	4	Entero de 4 bytes con signo (Largo)
	5	Entero de 8 bytes con signo (Moneda)
	6	Coma flotante de 4 bytes, precisión simple (Simple)
	7	Coma flotante de 8 bytes, precisión doble (Doble)
	8	Fecha/Hora
	9	Datos binarios, 256 bytes como máximo
	10	Texto ANSI, no diferencia entre mayúsculas y minúsculas, 256 bytes como máximo (Texto)
	11	Binario largo (Objeto OLE)
	12	Texto largo(Memo)
NextRow	Los datos de la siguiente fila de la tabla o de la consulta. Cuando abra un canal, NextRow devolverá los datos contenidos en la primera fila. Si la fila actual es el último registro y usted ejecuta NextRow, la petición fallará.
PrevRow	Los datos de la fila anterior de la tabla o de la consulta. Si PrevRow es la primera petición en un nuevo canal, se devolverán los datos existentes en la última fila de la tabla o de la consulta. Si el primer registro es la fila actual, fallará la petición de PrevRow.
FirstRow	Los datos de la primera fila de la tabla o de la consulta.
LastRow	Los datos de la última fila de la tabla o de la consulta.
FieldCount	El número de campos existentes en la tabla o en la consulta.
SQLText	Una instrucción SQL que representa la tabla o la consulta. En el caso de las tablas, este elemento devuelve una instrucción SQL con el formato "SELECT * FROM tabla;".
SQLText;n	Una instrucción SQL, en fragmentos de n caracteres, que representa la tabla o la consulta, donde n es un entero hasta 255. Por ejemplo, suponga que una consulta se representa mediante la siguiente instrucción SQL: "SELECT * FROM Pedidos;" El elemento "SQLText;7" devuelve los siguientes fragmentos, delimitados por tabuladores: "SELECT " "* FROM " "Pedidos;"
El siguiente ejemplo muestra cómo puede usar DDE en un procedimiento Visual Basic para solicitar datos de una tabla de la base de datos de ejemplo Neptuno e insertarlos en un archivo de texto:

Sub NeptunoDDE

Dim intChan1 As Integer, intChan2 As Integer, intChan3 As Integer

Dim strResp1 As Variant, strResp2 As Variant, strResp3 As Variant

' En un módulo Visual Basic, obtener datos de tabla Categorías,

' de la consulta Catálogo, y de la tabla Pedidos de Neptuno.mdb.

' Asegúrese de que la base de datos está abierta.

intChan1 = DDEInitiate("MSAccess", "Neptuno;TABLE Shippers")

intChan2 = DDEInitiate("MSAccess", "Neptuno;QUERY Catálogo")

intChan3 = DDEInitiate("MSAccess", "Neptuno;SQL SELECT * " _

& "FROM Pedidos " _

& "WHERE IdPedido > 10050;")

strResp1 = DDERequest(intChan1, "All")

strResp2 = DDERequest(intChan2, "FieldNames;T")

strResp3 = DDERequest(intChan3, "FieldNames;T")

DDETerminate intChan1

DDETerminate intChan2

DDETerminate intChan3

' Insertar datos en archivo de texto.

Open "C:\DATA.TXT" For Append As #1

Print #1, strResp1

Print #1, strResp2

Print #1, strResp3

Close #1

End Sub


Funciones e instrucciones DDE

Función DDE

Instrucción DDEExecute

Función DDEIniciar (DDEInitiate)

Instrucción DDEPoke

Función DDEPedido (DDERequest)

Función DDEEnviar (DDESend)

Instrucción DDETerminate

Instrucción DDETerminateAll


Instrucción DDEExecute

Puede usar la instrucción DDEExecute para enviar un comando desde una aplicación cliente a una aplicación servidor a través de un canal de intercambio dinámico de datos (DDE).

Por ejemplo, supongamos que ha abierto un canal DDE en Microsoft Access para transferir datos de texto desde una hoja de cálculo de Microsoft Excel hasta una base de datos de Microsoft Access. Use la instrucción DDEExecute para enviar el comando Nuevo a Microsoft Excel con el fin de indicar que desea abrir una nueva hoja de cálculo. En este ejemplo, Microsoft Access actúa como aplicación cliente y Microsoft Excel actúa como aplicación servidor.

Sintaxis

DDEExecute númCanal, comando

La instrucción DDEExecute utiliza los siguientes argumentos.

Argumento	Descripción
númCanal	Un número de canal, el entero largo devuelto por la función DDEIniciar (DDEInitiate).
comando	Una expresión de cadena que contiene un comando reconocido por la aplicación servidor. Consulte la documentación de la aplicación servidor para obtener una lista de estos comandos.
Comentarios

El valor de comando depende de la aplicación y tema especificados cuando se abre el canal númCanal. Si númCanal no es un dato de tipo entero que corresponde a un canal abierto o si la otra aplicación no puede ejecutar el comando especificado, entonces se produce un error.

Desde Visual Basic, puede usar la instrucción DDEExecute sólo para enviar comandos a otra aplicación. Si desea información adicional acerca del envío de comandos a Microsoft Access desde otra aplicación, consulte Uso de Microsoft Access como servidor DDE.

Sugerencia   Si necesita manipular objetos de otra aplicación desde Microsoft Access, considere la posibilidad de usar Automatización.


Ejemplo de Intercambio dinámico de datos (DDE)

El siguiente establece un vínculo DDE con Microsoft Excel, coloca algunos valores en las celdas de la primera fila de una hoja de cálculo nueva y crea un gráfico a partir de los valores. Primero, la función DDEIniciar (DDEInitiate) abre un canal para iniciar la conversación DDE. Después, la instrucción DDEExecute envía a Microsoft Excel el comando para abrir una nueva hoja de cálculo y la función DDEPedido (DDERequest) pregunta a Microsoft Excel el nombre de la hoja de datos recién creada. Se abre un nuevo canal y la instrucción DDEPoke envía a Microsoft Excel los datos para que elabore el gráfico. Finalmente, la instrucción DDETerminate finaliza el vínculo DDE con Microsoft Excel y la instrucción DDETerminateAll finaliza todos los vínculos DDE activos.

Sub ExcelDDE()

Dim intI As Integer, intChan1 As Integer

Dim strTopic As String, strResp As String, strSheetName As String

On Error Resume Next	' Establecer el control de errores.

intChan1 = DDEInitiate("Excel", "System")	' Establecer vínculo.

If Err Then	' Si se produce un error, Excel no

Err = 0	' está en ejecución. Restablecer error

Shell "C:\Excel\Excel.exe", 1	' e iniciar hoja de cálculo.

If Err Then Exit Sub	' Si se produce otro error, salir.

' Establecer vínculo hoja de cálculo.

intChan1 = DDEInitiate("Excel", "System")

End If

' Crear nueva hoja de cálculo.

DDEExecute intChan1, "[Nuevo(1)]"

' Indicar lista temas, nombre hoja de cálculo.

strTemas = DDERequest(intChan1, "Selection")

strSheetName = Left(strTemas, InStr(1, strTemas, "!") - 1)

' Terminar vínculo DDE.

DDETerminate intChan1

' Establecer vínculo con nueva hoja.

intChan1 = DDEInitiate("Excel", strSheetName)

For intI = 1 To 10	' Colocar algunos valores

DDEPoke intChan1, "R1C" & intI, intI	' en la primera fila.

Next intI

' Crear gráfico.

DDEExecute intChan1, "[Select(""R1C1:R1C10"")][New(2,2)]"

' Finalizar todos los vínculos.

DDETerminateAll

End Sub


Función DDEIniciar (DDEInitiate)

Puede usar la función DDEIniciar (DDEInitiate) para iniciar una conversación de intercambio dinámico de datos (DDE) con otra aplicación. La función DDEIniciar (DDEInitiate) abre un canal DDE para transferir datos entre un servidor DDE y una aplicación cliente.

Por ejemplo, si desea transferir datos desde una hoja de cálculo de Microsoft Excel a una base de datos de Microsoft Access, puede usar la función DDEIniciar (DDEInitiate) para abrir un canal entre las dos aplicaciones. En este ejemplo, Microsoft Access actúa como la aplicación cliente y Microsoft Excel actúa como la aplicación servidor.

Sintaxis

DDEInitiate(aplicación, tema)

La función DDEIniciar (DDEInitiate) utiliza los siguientes argumentos.

Argumento	Descripción
aplicación	Una expresión de cadena que identifica a una aplicación que puede participar en una conversación DDE. Por lo general aplicación es el nombre de un archivo .exe (sin la extensión .exe) de una aplicación basada en Microsoft Windows, como por ejemplo Microsoft Excel.
tema	Expresión de cadena que contiene el nombre de un tema reconocido por la aplicación. Consulte la documentación de la aplicación para obtener una lista de temas.
Comentarios

Si la función DDEIniciar (DDEInitiate) tiene éxito iniciando una conversación DDE con la aplicación y tema especificados por los argumentos aplicación y tema, entonces devuelve un dato de tipo entero Largo. Este valor entero representa un número de canal exclusivo que identifica un canal por el cual puede realizarse la transferencia de datos. Este número de canal se puede usar después con otras funciones e instrucciones DDE.

Si la aplicación no se ha ejecutado, o si se ha ejecutado pero no reconoce tema o si no admite DDE, la función DDEIniciar (DDEInitiate) devuelve un error en tiempo de ejecución.

El valor de tema depende de la aplicación especificada por el argumento aplicación. Cuando se trata de aplicaciones que usan archivos de documentos o de datos, los nombres de temas válidos a menudo incluyen el nombre de esos archivos.

Nota   El número máximo de canales que pueden estar abiertos simultáneamente está determinado por Microsoft Windows y por la memoria y los recursos de su sistema. Si no está usando algún canal, debería conservar los recursos finalizándolo mediante una instrucción DDETerminate o DDETerminateAll.

Sugerencia Si necesita manipular objetos de otra aplicación desde Microsoft Access, considere la posibilidad de usar Automatización.


Instrucción DDEPoke

Puede usar la instrucción DDEPoke para proporcionar datos de texto desde una aplicación cliente a una aplicación servidor a través de un canal de intercambio dinámico de datos (DDE).

Por ejemplo, si tiene un canal DDE abierto entre Microsoft Access y Microsoft Excel, puede usar la instrucción DDEPoke para transferir texto de una base de datos de Microsoft Access a una hoja de cálculo de Microsoft Excel. En este ejemplo, Microsoft Access actúa como la aplicación cliente y Microsoft Excel actúa como la aplicación servidor.

Sintaxis

DDEPoke númCanal, elemento, datos

La instrucción DDEPoke utiliza los siguientes argumentos.

Argumento	Descripción
númCanal	Un número de canal, un valor entero devuelto por la función DDEIniciar (DDEInitiate).
elemento	Una expresión de cadena que es el nombre de un elemento de datos reconocido por la aplicación especificada por la función DDEIniciar (DDEInitiate). Consulte la documentación de la aplicación para obtener una lista de posibles elementos.
datos	Una cadena que contiene los datos suministrados a la otra aplicación.
Comentarios

El valor de elemento depende de la aplicación y tema especificados cuando se abre el canal númCanal. Por ejemplo, el elemento el elemento puede ser un intervalo de celdas de una hoja de cálculo de Microsoft Excel.

La cadena que contiene data debe ser una cadena de texto alfanumérica. No se admite ningún otro tipo de formato. Por ejemplo, datos puede ser un número para llenar una celda de un intervalo especificado en una hoja de cálculo de Excel.

Si númCanal no es un dato de tipo entero que corresponde a un canal abierto o si la otra aplicación no reconoce o acepta los datos especificados, entonces se produce un error en tiempo de ejecución.

Sugerencia   Si necesita manipular objetos de otra aplicación desde Microsoft Access, considere la posibilidad de usar Automatización.


Función DDEPedido (DDERequest)

Puede usar la función DDEPedido (DDERequest) a través de un canal de intercambio dinámico de datos (DDE) para solicitar un elemento de información de una aplicación servidor de DDE.

Por ejemplo, si tiene un canal DDE abierto entre Microsoft Access y Microsoft Excel, puede usar la función DDEPedido (DDERequest) para transferir texto de una hoja de cálculo de Microsoft Excel a una base de datos de Microsoft Access. En este ejemplo, Microsoft Access actúa como la aplicación cliente y Microsoft Excel actúa como la aplicación servidor.

Sintaxis

DDERequest(númCanal, elemento)

La función DDEPedido (DDERequest) utiliza los siguientes argumentos.

Argumento	Descripción
númCanal	Un número de canal, un valor entero devuelto por la función DDEIniciar (DDEInitiate).
Elemento	Una expresión de cadena que es el nombre de un elemento de datos reconocido por la aplicación especificada por la función DDEIniciar (DDEInitiate). Consulte la documentación de la aplicación para obtener una lista de los elementos posibles.
Comentarios

El argumento númCanal especifica el número de canal de la conversación DDE deseada y el argumento elemento identifica qué datos deben recuperarse de la aplicación servidor. El valor de elemento depende de la aplicación y del tema especificados al abrir el canal númCanal. Por ejemplo, elemento puede ser un intervalo de celdas de una hoja de cálculo de Microsoft Excel.

La función DDEPedido (DDERequest) devuelve un dato de tipo Variant que contiene la información solicitada en forma de una cadena, si la solicitud tuvo éxito.

Los datos se solicitan en el formato de texto alfanumérico. Las imágenes o el texto en cualquier otro formato no se pueden transferir.

Si númCanal no es un dato de tipo entero correspondiente a un canal abierto, o si los datos solicitados no pueden transferirse, se produce un error en tiempo de ejecución.

Sugerencia   Si necesita manipular objetos de otra aplicación desde Microsoft Access, considere la posibilidad de usar Automatización.


Instrucción DDETerminate

Puede usar la instrucción DDETerminate para cerrar un canal de intercambio dinámico de datos (DDE).

Por ejemplo, si ha abierto un canal DDE para transferir datos entre Microsoft Excel y Microsoft Access, puede usar la instrucción DDETerminate para cerrar el canal una vez finalizada la transferencia.

Sintaxis

DDETerminate númCanal

Comentarios

El argumento númCanal especifica el número de canal que se debe cerrar. Hace referencia a un canal abierto por la función DDEIniciar (DDEInitiate). Si númCanal no es un entero correspondiente a un canal abierto, entonces se produce un error en tiempo de ejecución.

Una vez que se ha cerrado un canal, cualquier función o instrucción DDE efectuada en ese canal causará un error en tiempo de ejecución.

La instrucción DDETerminate no tiene ningún efecto sobre expresiones de vínculos DDE activos en campos de formularios o informes.

Sugerencia   Si necesita manipular objetos de otra aplicación desde Microsoft Access, considere la posibilidad de usar Automatización.


Instrucción DDETerminateAll

Puede usar la instrucción DDETerminateAll para cerrar todos los canales de intercambio dinámico de datos (DDE).

Por ejemplo, supongamos que ha abierto dos canales DDE entre Microsoft Excel y Microsoft Access, uno para recuperar información del sistema sobre Microsoft Excel y otro para transferir datos. Puede usar la instrucción DDETerminateAll para cerrar ambos canales simultáneamente.

Sintaxis

DDETerminateAll

Comentarios

El uso de la instrucción DDETerminateAll equivale a ejecutar una instrucción DDETerminate por cada número de canal abierto. Al igual que la instrucción DDETerminate, la instrucción DDETerminateAll no afecta a ninguna expresión de vínculo DDE activo en los campos de formularios o informes.

Si no hay ningún canal abierto, la instrucción DDETerminateAll se ejecuta sin causar ningún error en tiempo de ejecución.

Sugerencias

•	Si interrumpe un procedimiento que ejecuta DDE, es posible que deje canales abiertos inadvertidamente. Para evitar agotar los recursos del sistema, use la instrucción DDETerminateAll en su código o desde el panel Inmediato (inferior) de la ventana Depuración al depurar código que ejecuta DDE.

•	Si necesita manipular los objetos de otra aplicación desde Microsoft Access, considere la posibilidad de usar Automatización.


Funciones agregadas de dominio

Las funciones agregadas de dominio proporcionan información estadística sobre conjuntos de registros (un dominio). Por ejemplo, puede usar una función agregada para contar el número de registros de un conjunto determinado de registros o para determinar el promedio de los valores de un campo determinado.

Los dos tipos de funciones agregadas, las funciones agregadas de dominio y las funciones agregadas de SQL, proporcionan una funcionalidad similar pero se usan en situaciones diferentes. Las funciones agregadas de SQL pueden incluirse en la sintaxis de una instrucción SQL, pero no es posible llamarlas directamente desde Visual Basic. A la inversa, las funciones agregadas de dominio sí que pueden llamarse directamente desde el código Visual Basic. También pueden incluirse en una instrucción SQL, pero una función agregada de SQL suele ser más eficiente.

Si está realizando cálculos estadísticos desde dentro de un código, debe usar las funciones agregadas de dominio. También puede usar las funciones agregadas de dominio para especificar criterios, actualizar valores o crear campos calculados en una expresión de consulta. Puede usar las funciones agregadas de SQL o las funciones agregadas de dominio en un control calculado de un formulario o informe.

Las funciones agregadas de dominio incluyen:

Función DProm (DAvg)

Función DCont (DCount)

Función DBúsq (DLookup)

Funciones DPrim (DFirst) y DÚltimo (DLast)

Funciones DMín (DMin) y DMáx (DMax)

Funciones DDesvEst (DStDev) y DDesvEstP (DStDevP)

Función DSuma (DSum)

Funciones DVar y DVarP


Función DProm (DAvg)

Puede usar la función DProm (DAvg) para calcular la media aritmética de un conjunto de valores en un grupo de registros especificado (un dominio). Utilice la función Dprom (DAvg) en el código de Visual Basic o en una macro, en una expresión de consulta o en un control calculado.

Por ejemplo, puede usar la función Dprom (DAvg) en la fila Criterio de una consulta de selección sobre los gastos de envío para restringir los resultados en los registros donde el costo de envío está por encima de la media. O bien, puede usar una expresión que incluya la función DProm (DAvg) en un control calculado y presentar el valor medio de los pedidos anteriores junto al valor de un nuevo pedido.

Sintaxis

DProm(expresión, dominio[, criterio])

DAvg(expresión, dominio[, criterio])

La función DProm (DAvg) tiene los siguientes argumentos:

Argumento	Descripción
expresión	Una expresión que identifica el campo que contiene los datos numéricos que se desean promediar. Puede ser una expresión de cadena que identifique un campo de una tabla o consulta o bien una expresión que realice un cálculo usando los datos de ese campo. En expresión, puede incluir el nombre de un campo de tabla, un control de un formulario, una constante o una función. Si expresión incluye una función, puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las demás funciones agregadas de dominio ni funciones agregadas de SQL.
dominio	Una expresión de cadena que identifica los registros que constituyen el dominio. Puede ser un nombre de tabla o un nombre de consulta.
criterios	Una expresión de cadena opcional que se utiliza para restringir el intervalo de datos sobre el que se ejecuta la función DProm (DAvg). Por ejemplo, criterios suele ser equivalente a la cláusula WHERE en una expresión SQL (sin la palabra WHERE). Si se omite criterios, la función DProm (DAvg) evalúa expresión para todo el dominio. Cualquier campo que incluya en criterios debe ser también un campo de dominio; de lo contrario, la función DProm (DAvg) devuelve el valor Null.
Comentarios

Los registros que contienen valores Null no se incluyen en el cálculo del promedio.

Independientemente de si se usa la función DProm (DAvg) en una macro o módulo, en una expresión de consulta o en un control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluará correctamente.

Puede usar la función DProm (DAvg) para especificar criterios en la fila Criterio de una consulta. Por ejemplo, supongamos que desea ver una lista de todos los productos solicitados en cantidades superiores a la cantidad de pedido media. Puede crear una consulta en las tablas Pedidos, Detalles de pedidos y Productos e incluir el campo Nombre del producto y el campo Cantidad, con la siguiente expresión en la fila Criterio situada bajo el campo Cantidad:

>DAvg("[Cantidad]", "Pedidos")

También puede usar la función DProm (DAvg) dentro de una expresión de un campo calculado o en la fila Actualizar a de una consulta de actualización.

Nota   Puede usar la función DProm (DAvg) o Promedio (Avg) en una expresión de campo calculado dentro de una consulta de totales. Si usa la función DProm (DAvg), los valores se promedian antes de que se agrupen los datos. Si usa la función Promedio (Avg), los datos se agrupan antes de que se promedien los valores de la expresión del campo.

Use la función DProm (DAvg) en un control calculado cuando necesite especificar criterios para restringir el intervalo de los datos sobre el que se ejecuta la función DProm (DAvg). Por ejemplo, para presentar el costo medio de envío de los envíos realizados a California, configure la propiedad OrigenDelControl (ControlSource) de un cuadro de texto con la siguiente expresión:

=DAvg("[Gastos de envío]", "Pedidos", "[RegiónDestinatario] = 'CA'")

Si simplemente desea promediar todos los registros de dominio, use la función Promedio (Avg).

Puede usar la función DProm (DAvg) en un módulo o una macro o bien en un control calculado de un formulario si un campo que necesita presentar no se encuentra en el origen del registro en el que está basado el formulario. Por ejemplo, supongamos que tiene un formulario basado en la tabla Pedidos y que desea incluir el campo Cantidad de la tabla Detalles de pedidos con el fin de presentar el número medio de elementos solicitados por un cliente determinado. Puede usar la función DProm (DAvg) para realizar este cálculo y presentar los datos en el formulario.

Sugerencias

•	Si usa la función DProm (DAvg) en un control calculado, quizá desee situar el control en el encabezado o el pie del formulario, de modo que el valor de ese control no se vuelva a calcular cada vez que usted se mueva a otro registro.

•	Si el tipo de datos del campo del que se deriva expresión es un número, la función DProm (DAvg) devuelve un tipo de datos Double. Si usa la función DProm (DAvg) en un control calculado, incluya una función de conversión de tipos de datos en la expresión para mejorar el rendimiento.

•	Aumque puede usar la función DProm (DAvg) para determinar el promedio de los valores de un campo de una tabla externa, puede ser más eficiente crear una consulta que contenga todos los campos que necesita y a continuación basar el formulario o informe en esta consulta.

Nota   Los cambios no guardados realizados en los registros del dominio no se incluyen al usar esta función. Si desea que la función DProm (DAvg) se base en los valores modificados, debe guardar primero los cambios haciendo clic en Guardar registro en el menú Registros, moviendo el enfoque a otro registro o usando el método Update.


Ejemplo de la función DProm (DAvg)

El siguiente ejemplo devuelve el promedio de los gastos de envío de los pedidos enviados a España después del 1 de enero de 1996. El dominio es la tabla Pedidos. El argumento criterios restringe el conjunto de registros resultante a aquéllos para los que País destinatario es España y Fecha de envío es posterior o igual a 1-1-96. Observe que la palabra clave Y (AND) se incluye en la cadena para separar los diversos campos del argumento criterios. Todos los registros que se incluyan en el cálculo de la función DProm (DAvg) tendrán estos dos criterios.

Dim dblX As Double

dblX = DAvg("[Gastos de envío]", "Pedidos", _

"[País destinatario] = 'España' AND [Fecha de envío] >= #1-1-96#")

El siguiente ejemplo calcula un promedio usando una variable, cadPaís, en el argumento criterios. Observe que se incluyen signos de comilla tipográfica (') en las expresiones de cadena, de modo que cuando se concatenen todas las cadenas, la cadena España se incluirá entre signos de comilla tipográfica. En este ejemplo, la palabra clave O (OR) se usa para separar los diversos campos. Este ejemplo devuelve todos los registros que tienen uno de los criterios o los dos.

Dim dblX As Double, cadPais As String

cadPaís = "España"

dblX = DAvg("[Fecha de envío]", "Pedidos", _

"[País de envío] = '" & cadPais & "'OR [FechaEnvío] >= #1-1-96#")


Función DCont (DCount)

Puede usar la función DCont (DCount) para determinar el número de registros incluidos en un conjunto de registros especificado (un dominio). Use la función DCont (DCount) en Visual Basic, en una macro, en una expresión de consulta o en un control calculado.

Por ejemplo, puede usar la función DCont (DCount) en un módulo para obtener el número de registros de la tabla Pedidos correspondientes a los pedidos realizados en una fecha determinada.

Sintaxis

DCont(expresión; dominio[; criterios])

DCount(expresión, dominio[, criterios])

La sintaxis de la función DCont (DCount) tiene los siguientes argumentos:

Argumento	Descripción
expresión	Una expresión que identifica el campo que contiene los registros que se desean contar. Puede ser una expresión de cadena que identifica un campo de una tabla o consulta o bien una expresión que realiza un cálculo usando los datos de ese campo. En expresión, puede incluir el nombre de un campo de tabla, un control de un formulario, una constante o una función. Si expresión incluye una función, puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las demás funciones agregadas de dominio ni funciones agregadas de SQL.
dominio	Una expresión de cadena que identifica el conjunto de registros que constituyen el dominio. Puede ser un nombre de tabla o un nombre de consulta.
criterios	Una expresión de cadena opcional que se utiliza para restringir el intervalo de los datos sobre el que se ejecuta la función DCont (DCount). Por ejemplo, criterios suele ser equivalente a la cláusula WHERE en una expresión SQL (sin la palabra WHERE). Si se omite criterios, la función DCont (DCount) evalúa expresión para todo el dominio. Cualquier campo que se incluya en criterios debe ser también un campo de dominio; de lo contrario, la función DCont (DCount) devuelve el valor Null.
Comentarios

Use la función DCont (DCount) para contar el número de registros de un dominio cuando no necesita conocer sus valores. Aunque el argumento expresión puede realizar un cálculo sobre un campo, la función DCont (DCount) simplemente proporciona el número de registros. El valor de los cálculos realizados por expresión no está disponible.

Independientemente de si usa la función DCont (DCount) en una macro o módulo, en una expresión de consulta o en un control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluará correctamente.

Use la función DCont (DCount) en un control calculado cuando necesite especificar criterios para restringir el intervalo de datos sobre el que se ejecuta la función. Por ejemplo, para presentar el número de pedidos que se enviarán a California, establezca la propiedad OrigenDelControl (ControlSource) de un cuadro de texto a la siguiente expresión:

=DCount("[IdPedido]", "Pedidos", "[RegiónEnvío] = 'CA'")

Si simplemente desea contar todos los registros de dominio, sin especificar ninguna restricción, use la función Cuenta (Count).

Sugerencia   La velocidad de la función Cuenta (Count) se ha optimizado para que realice un recuento rápido de los registros de las consultas. Use la función Cuenta (Count) en una expresión de consulta en lugar de la función DCont (DCount) y establezca criterios opcionales para aplicar restricciones a los resultados. Use la función DCont (DCount) cuando deba contar registros de un dominio desde dentro de un módulo de código o una macro o bien en un control calculado.

Puede usar la función DCont (DCount) para contar el número de registros que contienen un campo determinado que no está en el origen de registro en el cual está basado el formulario o informe. Por ejemplo, puede presentar el número de pedidos de la tabla Pedidos en un control calculado de un formulario basado en la tabla Productos.

La función DCont (DCount) no cuenta registros que contengan valores Null en el campo al que hace referencia expresión, a no ser que expresión sea un asterisco, el carácter comodín (*). Si usa un asterisco, la función DCont (DCount) calcula el número total de registros, incluidos los que contienen campos con valor Null. El siguiente ejemplo calcula el número de registros de la tabla Pedidos.

entX = DCount("*", "Pedidos")

Si dominio es una tabla con una clave principal, también puede contar el número total de registros estableciendo expresión al campo de clave principal, ya que nunca habrá un valor Null en el campo de clave principal.

Si expresión identifica varios campos, separe los nombres de campo con un operador de concatenación, bien una "y" comercial (&) o un signo más (+). Si usa una "y" comercial para separar los campos, la función DCont (DCount) devuelve el número de registros que contienen datos en cualquiera de los campos listados. Si usa un signo más (+), la función DCont (DCount) devuelve sólo el número de registros que contienen datos en todos los campos listados. El ejemplo siguiente muestra el efecto de cada operador cuando se usa con un campo que contiene datos en todos los registros (NombreEnvío) y un campo que no contiene datos (RegiónDestinatario):

entW = DCount("[NombreEnvío]", "Pedidos")	' Devuelve 831.

entX = DCount("[RegiónDestinatario]", "Pedidos")	' Devuelve 323.

entY = DCount("[NombreEnvío] + [RegiónDestinatario]", "Pedidos")	' Devuelve 323.

entZ = DCount("[NombreEnvío] & [RegiónDestinatario]", "Pedidos")	' Devuelve 831.

Nota   La y comercial es el operador preferido para realizar la concatenación de cadenas. Debería evitar la utilización del operador suma para cualquier cosa distinta de sumas de números, a menos que desee propagar los valores Nulls por una expresión.

Los cambios no guardados realizados en los registros del dominio no se incluyen al usar esta función. Si desea que la función DCont (DCount) se base en los valores modificados, debe guardar primero los cambios eligiendo en el menú Registros el comando Guardar registro, moviendo el enfoque a otro registro o usando el método Update.


Ejemplos de la función DCont (DCount)

El siguiente ejemplo devuelve el número de pedidos enviados a España antes del 1 de enero de 1995. El dominio es la tabla Pedidos. El argumento criterios restringe el conjunto de registros resultante a aquéllos para los que PaísDestinatario es igual a España y FechaEnvío es anterior a 1-1-95.

intX = DCount("[FechaEnvío]", "Pedidos", _

"[PaísDestinatario] = 'España' AND [FechaEnvío] < #1-1-95#")

En el ejemplo siguiente, el argumento criterios incluye el valor actual de un cuadro combinado denominado "País destinatario". Los valores del cuadro combinado "País destinatario" provienen del campo "País destinatario" de la tabla Pedidos. Observe que la referencia al control no está incluida en los signos de comillas tipográficas que denotan cadenas. De esta forma se garantiza que siempre que se llame la función DCont (DCount), Microsoft Access obtendrá el valor actual del control.

intX = DCount("[FechaEnvío]", "Pedidos", "[PaísDestinatario] = '" _
& Forms!Pedidos![PaísDestinatario] & "'AND [FechaEnvío] < #1-1-95#")


Funciones DPrim y DÚltimo (DFirst y DLast)

Puede usar las funciones DPrim (DFirst) y DÚltimo (DLast) para que devuelvan un registro aleatorio de un campo particular en una tabla o consulta cuando necesite simplemente cualquier valor de ese campo. Use las funciones DPrim (DFirst) y DÚltimo (DLast) en una macro, módulo, expresión de una consulta, o control calculado en un formulario o en un informe.

Sintaxis

DPrim(expresión; dominio[; criterios])

DFirst(expresión, dominio[, criterios])

DÚltimo(expresión; dominio[; criterios])

DLast(expresión, dominio[, criterios])

La sintaxis de las funciones DPrim (DFirst) y DÚltimo (DLast) tienen los siguientes argumentos:

Argumento	Descripción
expresión	Una expresión que identifica el campo en el que desea encontrar el primer o el último valor. Puede ser una expresión de cadena que identifica un campo de una tabla o consulta o bien una expresión que realiza un cálculo usando los datos de ese campo. En expresión, puede incluir el nombre de un campo en la tabla, un control de formulario, una constante o una función. Si expresión incluye una función, puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las demás funciones agregadas de dominio ni funciones agregadas de SQL.
dominio	Una expresión de cadena que identifica el conjunto de registros que constituyen el dominio.
criterios	Una cadena opcional que se utiliza para restringir el intervalo de datos sobre el que se ejecutan las funciones DPrim (DFirst) o DÚltimo (DLast). Por ejemplo, criterios suele ser equivalente a la cláusula WHERE en una expresión SQL (sin la palabra WHERE). Si se omite criterios, las funciones DPrim (DFirst) y DÚltimo (DLast) evalúan expresión para todo el dominio. Cualquier campo que se incluya en criterios debe ser también un campo de dominio; de lo contrario, las funciones DPrim (DFirst) y DÚltimo (DLast) devuelven el valor Null.
Comentarios

Nota   Si desea que devuelvan el primer o último registro de un conjunto de registros (un dominio), debería crear una consulta ordenada por orden ascendente o descendente y establecer la propiedad Valores superiores al valor 1. Si desea más información, consulte el tema de la propiedad Valores superiores. Desde Visual Basic, también puede crear un objeto Recordset, y utilizar los métodos MoveFirst o MoveLast para obtener el primer o último registro de un conjunto de registros.


Función DBúsq (DLookup)

Puede usar la función DBúsq (DLookup) para obtener el valor de un campo determinado de un conjunto de registros especificado (un dominio). Use la función DBúsq (DLookup) de Visual Basic, en una macro. en una expresión de consulta o en un control calculado de un formulario o informe.

Puede usar la función DBúsq (DLookup) para presentar el valor de un campo que no está en el origen de registro del formulario o informe. Por ejemplo, supongamos que tiene un formulario basado en la tabla Detalles de pedidos. El formulario contiene los campos IdPedido, IdProducto, PrecioUnidad, Cantidad y Descuento. No obstante, el campo NombreProducto se encuentra en otra tabla, la tabla Productos. Puede usar la función DBúsq (DLookup) en un control calculado para presentar el NombreProducto en el mismo formulario.

Sintaxis

DBúsq (expresión; dominio[; criterios])

DLookup (expresión, dominio[, criterios])

La sintaxis de la función DBúsq (DLookup) tiene los siguiente argumentos:

Argumento	Descripción
expresión	Una expresión que identifica el campo cuyo valor desea que se devuelva. Puede ser una expresión de cadena que identifica un campo de una tabla o consulta o bien una expresión que realiza un cálculo usando los datos de ese campo. En expresión, puede incluir el nombre de un campo en una tabla, un control de un formulario, una constante o una función. Si expresión incluye una función, puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las demás funciones agregadas de dominio ni funciones agregadas de SQL.
dominio	Una expresión de cadena que identifica el conjunto de registros que constituyen el dominio. Puede ser un nombre de tabla o un nombre de consulta.
criterios	Expresión de cadena opcional que se utiliza para restringir el intervalo de datos sobre el que se ejecuta la función DBúsq (DLookup). Por ejemplo, criterios suele ser equivalente a la cláusula WHERE en una expresión SQL (sin la palabra WHERE). Si se omite criterios, la función DBúsq (DLookup) evalúa expresión para todo el dominio. Cualquier campo que se incluya en criterios debe ser también un campo de dominio; de lo contrario, DBúsq (DLookup) devuelve el valor Null.
Comentarios

La función DBúsq (DLookup) devuelve un único valor de campo basado en la información especificada en criterios. Aunque criterios es un argumento opcional, si no proporciona un valor para criterios, la función DBúsq (DLookup) simplemente devuelve un valor aleatorio del dominio.

Si ningún registro satisface criterios o si dominio no contiene ningún registro, la función DBúsq (DLookup) devuelve el valor Null.

Si más de un campo satisface los criterios, la función DBúsq (DLookup) devuelve la primera aparición. Debe especificar criterios que garanticen que el valor de campo devuelto por la función DBúsq (DLookup) es único. Quizá desee usar un valor de clave principal para los criterios, como [Identificador de empleado] en el ejemplo siguiente, con el fin de garantizar que la función DBúsq (DLookup) devuelve un único valor:

Dim varX As Variant

varX = DLookup("[Apellidos]", "Empleados", "[IdEmpleado] = 1")

Independientemente de si usa la función DBúsq (DLookup) en una macro o módulo, en una expresión de consulta o en un control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluará correctamente.

Puede usar la función DBúsq (DLookup) para especificar criterios en la fila Criterio de una consulta, dentro de una expresión de campo calculado en una consulta o en la fila Actualizar a de una consulta de actualización.

También puede usar la función DBúsq (DLookup) en una expresión de un control calculado en un formulario o informe si el campo que necesita presentar no está en el origen de registro en el que está basado el formulario o el informe. Por ejemplo, supongamos que tiene un formulario Detalles de pedidos basado en una tabla Detalles de pedidos con un cuadro de texto denominado IdProducto que presenta el campo IdProducto. Para buscar NombreProducto en la tabla Productos, basándose en el valor del cuadro de texto, podría crear otro cuadro de texto y establecer su propiedad OrigenDelControl (ControlSource) de la forma siguiente:

=DLookup("[NombreProducto]", "Productos", "[IdProducto] =" & Forms! [Order Details]!ProductID)")

Sugerencias

•	Aunque puede usar la función DBúsq (DLookup) para presentar un valor procedente de un campo de una tabla externa, puede ser más eficiente crear una consulta que contenga los campos que necesita de ambas tablas y después basar el formulario o informe en dicha consulta.

•	También puede usar el Asistente para consultas para encontrar valores en una tabla externa.

Nota   Los cambios no guardados realizados en los registros del dominio no se incluyen al usar esta función. Si desea que la función DBúsq (DLookup) se base en los valores modificados, debe guardar primero los cambios haciendo clic en Guardar registro en el menú Registros, moviendo el enfoque a otro registro o usando el método Update.


Ejemplo de la función DBúsq (DLookup)

El siguiente ejemplo devuelve información sobre el campo NombreCompañía del registro que cumple con los criterios. El dominio es la tabla CompañíasEnvíos. El argumento criterios restringe el conjunto de registros resultante a aquéllos para los que IdCompañíaEnvíos es igual a 1.

Dim varX As Variant

varX = DLookup("[NombreCompañía]", "CompañíasEnvíos", "[IdCompañíaEnvíos] = 1")

El próximo ejemplo de la tabla CompañíasEnvíos usa el control de formulario IdCompañíaEnvíos con el fin de proporcionar criterios para la función DBúsq (DLookup). Observe que la referencia al control no está incluida en los signos de comillas tipográficas que denotan las cadenas. De esta forma se garantiza que cada vez que se llame a la función DBúsq (DLookup), Microsoft Access obtendrá el valor actual del control.

Dim varX As Variant

varX = DLookup("[NombreCompañía]", "CompañíasEnvíos", "[IdCompañíaEnvíos] = " _
& Forms!CompañíasEnvíos!IdCompañíaEnvíos)

El siguiente ejemplo usa una variable, entBúsqueda, para obtener el valor.

Dim entBúsqueda As Integer, varX As Variant

entBúsqueda = 1

varX = DLookup("[NombreCompañía]", "CompañíasEnvíos", "[IdCompañíaEnvíos] = " _
& entBúsqueda)


Funciones DMín y DMáx (DMin y DMax)

Puede usar las funciones DMín (DMin) y DMáx (DMax) para determinar los valores mínimo y máximo de un conjunto de registros especificado (un dominio).Use las funciones DMín (DMin) y DMáx (DMax) de Visual Basic, en una macro, en una expresión de consulta o en un control calculado.

Por ejemplo, puede usar las funciones DMín (DMin) y DMáx (DMax) en controles calculados de un informe para presentar las cantidades de pedido máxima y mínima de un cliente determinado. O bien, puede usar la función DMín (DMin) en una expresión de consulta para presentar todos los pedidos con un descuento mayor que el descuento mínimo posible.

Sintaxis

DMín(expresión; dominio[; criterios])

DMin(expresión, dominio[, criterios])

DMáx(expresión; dominio[; criterios])

DMax(expresión, dominio[, criterios])

Las funciones DMín (DMin) y DMáx (DMax) tienen los siguientes argumentos:

Argumento	Descripción
expresión	Una expresión que identifica el campo para el que desea encontrar el máximo o el mínimo. Puede ser una expresión de cadena que identifica un campo de una tabla o consulta o bien una expresión que realiza un cálculo usando los datos de ese campo. En expresión, puede incluir el nombre de un campo en una tabla, un control de un formulario, una constante o una función. Si expresión incluye una función, puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las demás funciones agregadas de dominio ni funciones agregadas de SQL.
dominio	Una expresión de cadena que identifica el conjunto de registros que constituyen el dominio. Puede ser un nombre de tabla o un nombre de consulta.
criterios	Una expresión de cadena opcional que se utiliza para restringir el intervalo de datos sobre el que se ejecutan las funciones DMín (DMin) o DMáx (DMax). Por ejemplo, criterios suele ser equivalente a la cláusula WHERE en una expresión SQL (sin la palabra WHERE). Si se omite criterios, las funciones DMín (DMin) y DMáx (DMax) evalúan expresión para todo el dominio. Cualquier campo que se incluya en criterios debe ser también un campo de dominio; de lo contrario las funciones DMín (DMin) y DMáx (DMax) devuelven el valor Null.
Comentarios

Las funciones DMín (DMin) y DMáx (DMax) devuelven el valor mínimo y máximo que satisfacen criterios. Si expresión identifica datos numéricos, las funciones DMín (DMin) y DMáx (DMax) devuelven valores numéricos. Si expresión identifica datos de cadena, devuelven la cadena primera o última en orden alfabético.

Las funciones DMín (DMin) y DMáx (DMax) ignoran los valores Null del campo al que hace referencia expresión. No obstante, si ningún registro satisface criterios o si dominio no contiene ningún registro, las funciones DMín (DMin) y DMáx (DMax) devuelven el valor Null.

Independientemente de si usa las funciones DMín (DMin) o DMáx (DMax) en una macro, módulo, expresión de consulta o control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluará correctamente.

Puede usar las funciones DMín (DMin) y DMáx (DMax) para especificar criterios en la fila Criterio de una consulta, en una expresión de campo calculado en una consulta o en la fila Actualizar a de una consulta de actualización.

Nota   Puede usar las funciones DMín (DMin) y DMáx (DMax) o las funciones Mín (Min) y Máx (Max) en una expresión de campo calculado en una consulta de totales. Si usa las funciones DMín (DMin) o DMáx (DMax), los valores se evalúan antes de que se agrupen los datos. Si usa las funciones Mín (Min) o Máx (Max), los datos se agrupan antes de que se evalúen los valores de la expresión del campo.

Use las funciones DMín (DMin) o DMáx (DMax) en un control calculado cuando necesite especificar criterios para restringir el intervalo de datos sobre el que se ejecuta la función. Por ejemplo, para presentar los gastos de envío máximos cargados por un pedido enviado a California, establezca la propiedad OrigenDelControl (ControlSource) de un cuadro de texto a la siguiente expresión:

=DMax("[Gastos de envío]", "Pedidos", "[Región destinatario] = 'CA'")

Si simplemente desea encontrar el valor mínimo y máximo de todos los registros de dominio, use las funciones Mín (Min) o Máx (Max).

Puede usar las funciones DMín (DMin) o DMáx (DMax) en un módulo o una macro o bien en un control calculado de un formulario si el campo que necesita presentar no está en el origen del registro en el que está basado el formulario.

Sugerencia   Aunque puede usar las funciones DMín (DMin) o DMáx (DMax) para encontrar el valor mínimo o máximo procedente de un campo de una tabla externa, puede ser más eficiente crear un consulta que contenga los campos que necesita de ambas tablas y basar el formulario o informe en dicha consulta.

Nota   Los cambios no guardados realizados en los registros del dominio no se incluyen al usar estas funciones. Si desea que las funciones DMáx (DMax) o DMín (DMin) se basen en los valores modificados, debe guardar primero los cambios haciendo clic en Guardar registro en el menú Registros, moviendo el enfoque a otro registro o usando el método Update.


Ejemplo de las funciones DMín y DMáx (DMin y DMax)

El siguiente ejemplo devuelve los valores más bajo y más alto del campo Gastos de envío para pedidos enviados a España. El dominio es la tabla Pedidos. El argumento criterios restringe el conjunto de registros resultante a aquéllos para los que PaísDestinatario es igual a España.

Dim curX As Currency, curY As Currency

curX = DMin("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = 'España'")

curY = DMax("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = 'España'")

En el ejemplo siguiente, el argumento criterios incluye el valor actual de un cuadro de lista denominado Fecha de pedido. El cuadro de texto es dependiente del campo FechaPedido de la tabla Pedidos. Observe que la referencia al control no está incluida entre los signos de dobles comillas tipográficas (") que denotan las cadenas. De esta forma se garantiza que cada vez que se llama la función DMáx (DMax), Microsoft Access obtiene el valor actual del control.

Dim curX As Currency

curX = DMax("[Gastos de envío]", "Pedidos", "[FechaPedido] = #" _
& Forms!Pedidos![FechaPedido] & "#")

En el ejemplo siguiente, la expresión de criterio incluye una variable, fechaPedido. Observe que en la expresión de cadena se incluyen signos de número (#), de modo que cuando las cadenas se concatenen, estos signos contendrán la fecha.

Dim fechaPedido As Date, curX As Currency

fechaPedido = "#30-3-95#"

curX = DMin("[Gastos de envío]", "Pedidos", "[FechaPedido] = #" _
& fechaPedido & "#")


Funciones DDesvEst y DDesvEstP (DStDev y DStDevP)

Puede usar las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) para estimar la desviación estándar de un conjunto de valores de un grupo de registros especificado (un dominio). Use las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) de Visual Basic, en una macro, en una expresión de consulta o en un control calculado de un formulario o informe.

Use la función DDesvEstP (DStDevP) para evaluar una población y la función DDesvEst (DStDev) para evaluar una muestra de población.

Por ejemplo, puede usar la función DDesvEst (DStDev) en un módulo para calcular la desviación estándar en los resultados de los exámenes de un grupo de estudiantes.

Sintaxis

DDesvEst (expresión; dominio[; criterios])

DStDev(expresión, dominio[, criterios])

DDesvEstP(expresión; dominio[; criterios])

DStDevP(expresión, dominio[, criterios])

La sintaxis de las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) tienen los siguientes argumentos:

Argumento	Descripción
expresión	Una expresión que identifica el campo numérico para el que desea hallar la desviación estándar. Puede ser una expresión de cadena que identifica un campo de una tabla o consulta o bien una expresión que realiza un cálculo usando los datos de ese campo. En expresión, puede incluir el nombre de un campo en una tabla, un control de un formulario, una constante o una función. Si expresión incluye una función, puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las demás funciones agregadas de dominio ni funciones agregadas de SQL.
dominio	Una expresión de cadena que identifica el conjunto de registros que constituye el dominio. Puede ser un nombre de tabla o un nombre de consulta.
criterios	Una expresión de cadena opcional que se utiliza para restringir el intervalo de datos sobre el que se ejecuta las funciones DDesvEst (DStDev) o DDesvEstP (DStDevP). Por ejemplo, criterios suele ser equivalente a la cláusula WHERE en una expresión SQL (sin la palabra WHERE). Si se omite criterios, las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) evalúan expresión para todo el dominio. Cualquier campo incluido en criterios debe ser también un campo de dominio; de lo contrario, las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) devolverán el valor Null.
Comentarios

Si dominio hace referencia a menos de dos registros o si menos de dos registros satisfacen los criterios, las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) devuelven el valor Null, que indica que no se puede calcular una desviación estándar.

Independientemente de si usa las funciones DDesvEst (DStDev) o DDesvEstP (DStDevP) en una macro, módulo, expresión de consulta o control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluará correctamente.

Puede usar las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) para especificar criterios en la fila Criterio de una consulta de selección. Por ejemplo, puede crear una consulta sobre la tabla Pedidos y la tabla Productos con el fin de presentar todos los productos para los que los gastos de envío estén por encima del promedio más la desviación estándar de gastos de envío. La fila Criterio situada bajo el campo Gastos de envío contendrá la siguiente expresión:

>(DStDev("[Gastos de envío]", "Pedidos") + DAvg("[Gastos de envío]", "Pedidos"))

Puede usar las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) dentro de una expresión de campo calculado en una consulta o en la fila Actualizar a de una consulta de actualización.

Nota   Puede usar las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) o las funciones DesvEst (StDev) y DesvEstp (StDevP) en una expresión de campo calculado en una consulta de totales. Si usa la función DDesvEst (DStDev) o DDesvEstP (DStDevP), los valores se calculan antes de que los datos se agrupen. Si usa la función DesvEst (StDev) y DesvEstP (StDevP), los datos se agrupan antes de que se evalúen los valores de la expresión del campo.

Use la función DDesvEst (DStDev) y DDesvEstP (DStDevP) en un control calculado cuando necesite especificar criterios para restringir el intervalo de datos sobre el que se ejecutan las funciones. Por ejemplo, para presentar la desviación estándar de los pedidos que van a enviarse a California, establezca la propiedad OrigenDelControl (ControlSource) de un cuadro de texto a la siguiente expresión:

=DStDev("[Gastos de envío]", "Pedidos", "[Región destinatario] = 'CA'")

Si simplemente desea encontrar la desviación estándar de todos los registros de dominio, use la función DesvEst (StDev) o DesvEstP (StDevP).

Sugerencia   Si el tipo de datos del campo del que se deriva expresión es numérico, las funciones DDesvEst (DStDev) y DDesvEstP (DStDevP) devuelven un tipo de datos Double. Si usa la función DDesvEst (DStDev) o DDesvEstP (DStDevP) en un control calculado, incluya una función de conversión de tipos de datos en la expresión para mejorar el rendimiento.

Nota   Los cambios no guardados realizados en los registros del dominio no se incluyen al usar estas funciones. Si desea que las funciones DDesvEst (DStDev) o DDesvEstP (DStDevP) se basen en los valores modificados, debe guardar primero los cambios haciendo clic en Guardar registro en el menú Registros, moviendo el enfoque a otro registro o usando el método Update.


Ejemplo de las funciones DDesvEst y DDesvEstP (DStDev y DStDevP)

El siguiente ejemplo devuelve estimaciones de la desviación estándar para una población y una muestra de población para los pedidos enviados a España. El dominio es la tabla Pedidos. El argumento criterios restringe el conjunto de registros resultante a aquéllos para los que PaísDestinatario es igual a España.

Dim dblX As Double, dblY As Double

' Estimación de muestra

dblX = DStDev("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = 'España'")

' Estimación de población.

dblY = DStDevP("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = 'España'").

El siguiente ejemplo calcula las mismas estimaciones usando una variable, cadPaís, en el argumento criterios. Observe que en la expresión de cadena se incluyen signos de comilla tipográfica ('), de modo que cuando las cadenas se concatenen, la cadena España quedará incluida entre signos de comilla tipográfica.

Dim cadPaís As String, dblX As Double, dblY As Double

cadPaís = "España"

dblX = DStDev("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = '"
& cadPaís & "'")

dblY = DStDevP("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = '"
 & cadPaís & "'")


Función DSuma (DSum)

Puede usar la función DSuma (DSum) para calcular la suma de un conjunto de valores de un grupo de registros especificado (un dominio). Use la función DSuma (DSum) de Visual Basic, en una macro, en una expresión de consulta o en un control calculado.

Por ejemplo, puede usar la función DSuma (DSum) en una expresión de campo calculado de una consulta para calcular las ventas totales realizadas por un empleado determinado durante un período de tiempo. O bien, puede usar la función DSuma (DSum) en un control calculado para presentar una suma continua de las ventas de un producto determinado.

Sintaxis

DSuma(expresión; dominio[; criterios])

DSum(expresión, dominio[, criterios])

La función DSuma (DSum) tiene los siguientes argumentos:

Argumento	Descripción
expresión	Una expresión que identifica un campo numérico de cuyos valores desea el total. Puede ser una expresión de cadena que identifica un campo de una tabla o consulta o bien una expresión que realiza un cálculo usando los datos de ese campo. En expresión, puede incluir el nombre de un campo en una tabla, un control de un formulario, una constante o una función. Si expresión incluye una función, puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las demás funciones agregadas de dominio ni funciones agregadas de SQL.
dominio	Una expresión de cadena que identifica el conjunto de registros que constituyen el dominio. Puede ser un nombre de tabla o un nombre de consulta.
criterios	Una expresión de cadena opcional que se utiliza para restringir el intervalo de datos sobre el que se ejecuta la función DSuma (DSum). Por ejemplo, criterios suele ser equivalente a la cláusula WHERE en una expresión SQL (sin la palabra WHERE). Si se omite criterios, la función DSuma (DSum) evalúa expresión para todo el dominio. Cualquier campo que se incluya en criterios debe ser también un campo de dominio; de lo contrario, la función DSuma (DSum) devuelve el valor Null.
Comentarios

Si ningún registro satisface el argumento criterios o si el dominio no contiene ningún registro, la función DSuma (DSum) devuelve el valor Null.

Independientemente de si usa la función DSuma (DSum) en una macro, módulo, expresión de consulta o control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluará correctamente.

Puede usar la función DSuma (DSum) para especificar criterios en la fila Criterio de una consulta, en un campo calculado de una expresión de consulta o en la fila Actualizar a de una consulta de actualización.

Nota   Puede usar la función DSuma (DSum) o Suma (Sum) en una expresión de campo calculado de una consulta de totales. Si usa la función DSuma (DSum), los valores se calculan antes de que los datos se agrupen. Si usa la función Sum, los datos se agrupan antes de que se evalúen los valores de la expresión del campo.

Es posible que desee usar la función DSuma (DSum) cuando necesite presentar la suma de un conjunto de valores procedente de un campo que no está en el origen de registro del formulario o informe. Por ejemplo, supongamos que tiene un formulario que presenta información sobre un producto determinado. Puede usar la función DSuma (DSum) para mantener un total continuo de las ventas de ese producto en un control calculado.

Sugerencia   Si necesita mantener un total continuo en un control de un informe, puede usar la propiedad SumaContinua (RunningSum) de ese control si el campo en que está basado está incluido en el origen de registro del informe. Use la función DSuma (DSum) para mantener una suma continua en un formulario.

Nota   Los cambios no guardados realizados en los registros del dominio no se incluyen al usar estas funciones. Si desea que la función DSuma (DSum) se base en los valores modificados, debe guardar primero los cambios haciendo clic en Guardar registro en el menú Registros, moviendo el enfoque a otro registro o usando el método Update.


Ejemplo de la función DSuma (DSum)

En este ejemplo suma los valores del campo Gastos de envío para los pedidos enviados a España. El dominio es la tabla Pedidos. El argumento criterios restringe el conjunto de registros resultante a aquéllos para los que País destinatario es igual a España.

Dim curX As Currency

curX = DSum("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = 'España'")

El ejemplo siguiente calcula un total usando dos criterios distintos. Observe que en la expresión de cadena se incluyen signos de comilla tipográfica (') y signos de número (#), de modo que cuando las cadenas se concatenen, la cadena España se encerrará entre signos de comilla tipográfica, y la fecha se encerrará entre signos de número.

Dim curX As Currency

curX = DSum("[Gastos de envío]", "Pedidos", _
"[PaísDestinatario] = 'España' AND [FechaEnvío] > #1-1-95#)

Puede usar una función agregada de dominio en la fila Actualizar a de una consulta de actualización. Por ejemplo, supongamos que desea realizar un seguimiento de las ventas actuales por producto en la tabla Productos. Puede agregar un nuevo campo denominado VentasHastaFecha a la tabla Productos y ejecutar una consulta de actualización para calcular los valores correctos y actualizar los registros. Cree una nueva consulta basada en la tabla Productos y haga clic en Actualización en el menú Consulta. Agregue el campo VentasHastaFecha a la cuadrícula de la consulta y escriba lo siguiente en la fila Actualizar a:

DSum("[Cantidad]*[PrecioUnidad]", "Detalles de pedidos", "[IdProducto] = " & [IdProducto])

Una vez ejecutada la consulta, Microsoft Access calcula la cantidad total de ventas para cada producto basada en la información de la tabla Detalles de pedidos. La suma de las ventas de cada producto se agrega a la tabla Productos.


Funciones DVar y DVarP

Puede usar las funciones DVar y DVarP para estimar la varianza de un conjunto de valores de un grupo de registros especificado (un dominio). Use las funciones DVar y DVarP de Visual Basic, en una macro, en una expresión de consulta o en un control calculado de un formulario o informe.

Use la función DVarP para evaluar la varianza de una población y la función DVar para evaluar la varianza de una muestra de población.

Por ejemplo, puede usar la función DVar para calcular la varianza de los resultados de los exámenes de un grupo de estudiantes.

Sintaxis

DVar(expresión; dominio[; criterios])

DVarP(expresión, dominio[, criterios])

Las funciones DVar y DVarP tienen los siguientes argumentos:

Argumento	Descripción
expresión	Una expresión que identifica el campo numérico en el que desea encontrar la varianza. Puede ser una expresión de cadena que identifica un campo de una tabla o consulta o bien una expresión que realiza un cálculo usando los datos de ese campo. En expresión, puede incluir el nombre de un campo en una tabla, un control de un formulario, una constante o una función. Si expresión incluye una función, puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las funciones agregadas de dominio ni funciones agregadas de SQL. Todo campo incluido en expresión debe ser un campo numérico.
dominio	Una expresión de cadena que identifica el conjunto de registros que constituyen el dominio. Puede ser un nombre de tabla o un nombre de consulta.
criterios	Una expresión de cadena opcional que se utiliza para restringir el intervalo de datos sobre el que se ejecuta la función DVar o DVarP. Por ejemplo, criterios suele ser equivalente a la cláusula WHERE en una expresión SQL (sin la palabra WHERE). Si se omite criterios, las funciones DVar y DVarP evalúan expresión para todo el dominio. Cualquier campo que se incluya en criterios debe ser también un campo de dominio; de lo contrario las funciones DVar y DVarP devuelven el valor Null.
Comentarios

Si dominio hace referencia a menos de dos registros o si menos de dos registros satisfacen criterios, las funciones DVar y DVarP devuelven el valor Null, que indica que no puede calcularse la varianza.

Independientemente de si usa la función DVar o DVarP en una macro, módulo, expresión de consulta o control calculado, debe crear el argumento criterios con cuidado para garantizar que se evaluará correctamente.

Puede usar las funciones DVar y DVarP para especificar criterios en la fila Criterio de una consulta de selección, en una expresión de campo calculado de una consulta o en la fila Actualizar a de una consulta de actualización.

Nota   Puede usar las funciones DVar y DVarP o las funciones Var y VarP en una expresión de campo calculado de una consulta de totales. Si usa la función DVar o DVarP, los valores se calculan antes de que se agrupen los datos. Si usa la función Var o VarP, los datos se agrupan antes de que se evalúen los valores de la expresión del campo.

Use las funciones DVar y DVarP en un control calculado cuando necesite especificar criterios para restringir el intervalo de datos sobre el que se ejecuta la función. Por ejemplo, para presentar una varianza de los pedidos que se van a enviar a California, establezca la propiedad OrigenDelControl (ControlSource) de un cuadro de texto a la siguiente expresión:

=DVar("[Gastos de envío]", "Pedidos", "[RegiónDestinatario] = 'CA'")

Si simplemente desea encontrar la desviación estándar de todos los registros de dominio, use la función Var o VarP.

Nota   Los cambios no guardados realizados en los registros del dominio no se incluyen al usar estas funciones. Si desea que la función DVar o DVarP se base en los valores modificados, debe guardar primero los cambios haciendo clic en Guardar registro en el menú Registros, moviendo el enfoque a otro registro o usando el método Update.


Ejemplo de las funciones DVar, DVarP

En este ejemplo devuelve estimaciones de la varianza de una población y una muestra de población para los pedidos enviados a España. El dominio es la tabla Pedidos. El argumento criterios restringe el conjunto de registros resultante a aquéllos para los que PaísDestinatario es igual a España.

Dim dblX As Double, dblY As Double

'Estimación de muestra.

dblX = DVar("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = 'España'")

'Estimación de población.

dblY = DVarP("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = 'España'")

El ejemplo siguiente devuelve estimaciones usando una variable, cadPaís, en el argumento criterios. Observe que en la expresión de cadena están incluidos signos de comilla tipográfica ('), de modo que cuando se concatenen las cadenas, la cadena España estará incluida entre signos de comilla tipográfica.

Dim cadPaís AS String, dblX As Double

cadPaís = "España"

dblX = DVar("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = '" & cadPaís & "'")

dblY = DVarP("[Gastos de envío]", "Pedidos", "[PaísDestinatario] = '" & cadPaís & "'")


Calculo de campos en las funciones agregadas de dominio

Puede usar el argumento de expresión de cadena (expresión) en una función agregada de dominio para realizar un cálculo sobre los valores de un campo. Por ejemplo, puede calcular un porcentaje (como por ejemplo una sobretasa o un impuesto sobre las ventas) dividiendo un valor de un campo por un número.

La tabla siguiente proporciona ejemplos de cálculos basados en campos de la tabla Pedidos y la tabla Detalles de pedidos.

Cálculo	Ejemplo
Sumar un número a un campo	"[Gastos de envío] + 5"
Restar un número de un campo	"[Gastos de envío] - 5"
Multiplicar un campo por un número	"[Gastos de envío] * 2"
Dividir un campo por un número	"[Gastos de envío] / 2"
Sumar un campo a otro	"[UnidadesEnExistencia] + [UnidadesPedidas]"
Restar un campo de otro	"[NivelNuevoPedido] - [UnidadesEnExistencia]"
Podría utilizar más probablemente una función agregada de dominio en una macro o módulo, en un control calculado de un formulario o informe, o en una expresión de criterio de una consulta.

Por ejemplo, puede calcular el descuento promedio de todos los pedidos de la tabla Detalles de pedidos; para ello, multiplique los campos PrecioUnidad y Descuento para determinar el descuento de cada pedido, después calcule el promedio. Introduzca el ejemplo siguiente en un procedimiento en un módulo:

Dim dblX As Double

dblX = DAvg("[PrecioUnidad] * [Descuento]", "[Detalles de pedidos]")


Eventos BeforeUpdate y AfterUpdate

•	El evento BeforeUpdate se produce antes de que se actualicen los datos de un control o registro.

•	El evento AfterUpdate se produce después de que se actualicen los datos modificados en un control o registro.

Notas

•	Al modificar los datos de un control con Visual Basic o con una macro que contenga la acción EstablecerValor no se activan estos eventos para el control. Sin embargo, si a continuación se desplaza a otro registro, o si guarda el registro actual, se producirán los eventos BeforeUpdate y AfterUpdate del formulario.

•	Los eventos BeforeUpdate y AfterUpdate sólo se aplican a los controles de los formularios, y no a los de los informes.

•	Estos eventos no se aplican a los botones de opción, casillas de verificación ni botones de alternar de un grupo de opciones. Sólo se aplican al propio grupo de opciones.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AntesDeActualizar (BeforeUpdate) o DespuésDeActualizar (AfterUpdate) al nombre de la macro o a [Procedimiento de evento].

Los eventos BeforeUpdate y AfterUpdate se producen cuando se actualiza un control o un registro. Dentro de un registro, los datos modificados de cada control se actualizan cuando el control pierde el enfoque o cuando el usuario presiona ENTRAR o TAB. Cuando el enfoque abandona el registro, o cuando el usuario hace clic en el comando Guardar registro del menú Registros, se actualiza todo el registro y los datos se guardan en la base de datos.

Al introducir datos nuevos o modificados en un control de un formulario y moverse después a otro registro o guardar el actual eligiendo Guardar registro en el menú Registros, los eventos BeforeUpdate y AfterUpdate del formulario se producen inmediatamente después de los eventos BeforeUpdate y AfterUpdate del control. Al pasar a otro registro se producen los eventos Exit y LostFocus del control, seguidos del evento Current del registro que pasa a ser el registro activo y de los eventos Enter y GotFocus del primer control de este registro. Para ejecutar las macros o procedimientos de evento de BeforeUpdate y AfterUpdate sin ejecutar los de los eventos Exit y LostFocus, guarde el registro con el comando Guardar registro del menú Registros.

Las macros y procedimientos de evento de BeforeUpdate y AfterUpdate sólo se ejecutan si se modifican los datos de un control. Estos eventos no se producen cuando cambia el valor de un control calculado. Las macros y procedimientos de evento de BeforeUpdate y AfterUpdate para un formulario sólo se ejecutan al modificar los datos de uno o más controles del registro.

En los formularios, puede usar el evento BeforeUpdate para cancelar la actualización de un registro antes de pasar a otro.

En los controles dependientes, la propiedad ValorAnterior (OldValue) no se establece al valor actualizado hasta después de producirse el evento AfterUpdate del formulario. Incluso cuando el usuario introduce un nuevo valor en el control, el valor de la propiedad ValorAnterior (OldValue) no cambia hasta que se guardan los datos (se actualiza el registro). Si cancela una actualización, el contenido de la propiedad ValorAnterior (OldValue) reemplazará al valor existente en el control.

El evento BeforeUpdate se utiliza a menudo para validar datos, especialmente cuando se realizan validaciones complejas, como aquéllas que:

•	Implican condiciones sobre más de un valor de un formulario.

•	Muestran mensajes de error diferentes en función de los datos introducidos.

•	Puede anular el usuario.

•	Contienen referencias a controles de otros formularios, o funciones definidas por el usuario.

Nota   Para realizar validaciones simples, o validaciones más complejas (como obligar a que haya un valor en un campo o validar más de un control de un formulario), puede utilizar la propiedad ReglaDeValidación (ValidationRule) de los controles y las propiedades ReglaDeValidación (ValidationRule) y Requerido (Required) para los campos y registros de las tablas.


Eventos BeforeUpdate y AfterUpdate - Macros
Eventos BeforeUpdate, AfterUpdate — Macros

Para ejecutar una macro cuando se producen los eventos BeforeUpdate o AfterUpdate, establezca la propiedad AntesDeActualizar (BeforeUpdate) o DespuésDeActualizar (AfterUpdate) al nombre de la macro. Microsoft Access ejecutará la macro especificada en la propiedad AntesDeActualizar (BeforeUpdate) o DespuésDeActualizar (AfterUpdate) de un control o formulario antes o después de que los datos del control o del registro activo del formulario se actualicen. Si los datos del control o formulario no se actualizan, la macro no se ejecuta.

Comentarios

Puede usar macros con BeforeUpdate para almacenar todas las validaciones de un formulario en un grupo de macros, o si utiliza una expresión de validación en varios formularios.

Por ejemplo, suponga que tiene un formulario en el que el usuario introduce el nombre de un país en el control País y su código postal en el control Código postal. Puede usar expresiones condicionales en la macro para asegurarse de que el dato introducido en el control País se corresponde con el del control Código postal y mostrar un mensaje cuando se introduzcan datos no válidos en este último.

Puede usar una macro con AfterUpdate para mostrar una página distinta del formulario o colocar el enfoque en un control o registro determinado. Por ejemplo, cuando el usuario introduce un valor en el control Categoría de un formulario, puede usar la acción IrAPágina en una macro con AfterUpdate para colocar el enfoque en la página del formulario que contenga los controles correspondientes a esa categoría.

Puede usar la acción CancelarEvento en una macro con BeforeUpdate para cancelar la actualización. Si la macro con BeforeUpdate está asignada a un control, la acción CancelarEvento devolverá el enfoque al control y el dato que el usuario haya introducido permanecerá en él.

Si se asigna una macro con BeforeUpdate a un formulario (con lo que se ejecutará cada vez que se modifique un registro), la acción CancelarEvento devolverá el enfoque al registro.

No es posible utilizar la acción CancelarEvento en una macro con AfterUpdate para cancelar el evento AfterUpdate.


Eventos BeforeUpdate y AfterUpdate - Procedimientos de evento
Eventos BeforeUpdate, AfterUpdate — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzcan los eventos BeforeUpdate o AfterUpdate establezca la propiedad AntesDeActualizar (BeforeUpdate) o DespuésDeActualizar (AfterUpdate) a [Procedimiento de evento] y después haga clic en el botón Generar [image].

Sintaxis

Private Sub Form_BeforeUpdate(Cancel As Integer)

Private Sub nombrecontrol_BeforeUpdate(Cancel As Integer)

Private Sub Form_AfterUpdate( )

Private Sub nombrecontrol_AfterUpdate( )

El procedimiento de evento BeforeUpdate tiene los argumentos siguientes.

Argumento	Descripción
nombrecontrol	Nombre del control para cuyo evento BeforeUpdate se desea ejecutar el procedimiento de evento.
Cancel	Este valor determina si se produce el evento BeforeUpdate. Al establecer este argumento a True (–1) se cancela el evento BeforeUpdate.
El procedimiento de evento AfterUpdate tiene el siguiente argumento.

Argumento	Descripción
nombrecontrol	Nombre del control para cuyo evento AfterUpdate se desea ejecutar el procedimiento de evento.
Comentarios

No es posible cancelar el evento AfterUpdate.

Puede utilizar un procedimiento de evento AfterUpdate para mostrar una página distinta del formulario o desplazar el enfoque a un control o registro determinado. Por ejemplo, cuando el usuario introduzca un valor en el control Categoría de un formulario, puede usar el método GoToPage en el procedimiento de evento AfterUpdate del formulario para desplazar el enfoque a la página del formulario que contenga los controles que correspondan a esa categoría.


Eventos BeforeUpdate, AfterUpdate - Ejemplo de procedimientos de evento
Eventos BeforeUpdate, AfterUpdate — Ejemplo de procedimientos de evento

Este ejemplo muestra cómo se puede utilizar un procedimiento de evento BeforeUpdate para comprobar si ya se ha introducido un nombre de producto en la base de datos. Después de que el usuario introduzca un nombre de producto en el cuadro NombreProducto, el valor se compara con el campo NombreProducto de la tabla Productos. Si coincide algún valor, se mostrará un mensaje informando al usuario de que el producto ya se encuentra en la base de datos.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario llamado Productos que contenga un cuadro de texto llamado NombreProducto.

Private Sub NombreProducto_BeforeUpdate(Cancel As Integer)

If(Not IsNull(DLookup("[NombreProducto]", "Productos", _

"[NombreProducto] ='" & Me!NombreProducto & "'"))) Then

MsgBox "El producto ya se ha introducido en la base de datos."

Cancel = True

Me!NombreProducto.Undo

End If

End Sub


Evento Click

El evento Click se produce cuando el usuario presiona y suelta un botón del mouse sobre un objeto.

Notas

•	El evento Click se aplica sólo a formularios, secciones de formularios y controles de formularios, y no a los controles de los informes.

•	Este evento no se aplica a las casillas de verificación, botones de opción ni a los botones de alternar de un grupo de opciones. Sólo se aplica al grupo de opciones en sí.

•	Este evento no se aplica a la etiqueta adjunta a un control, como por ejemplo la etiqueta de un cuadro de texto. Sólo se aplica a las etiquetas "independientes". Hacer clic en una etiqueta adjunta tiene el mismo efecto que hacerlo en el control asociado. Se producen los eventos normales del control y ningún evento de la etiqueta.

•	Este evento se aplica a un control que contiene un hipervínculo.

Comentarios

Para ejecutar una macro o un procedimiento de evento cuando se produzca este evento, establezca en la propiedad AlHacerClic (OnClick) el nombre de la macro o [Procedimiento de evento].

En un formulario, este evento se produce cuando el usuario hace clic en una zona en blanco o en selectores de registro en el formulario.

Para los controles, este evento se produce cuando el usuario realiza una de las siguientes acciones:

•	Hacer clic en un control con el botón primario del mouse (ratón). Al hacer clic con el botón secundario o central no se activa este evento.

•	Hacer clic con el botón primario del mouse en un control que contiene datos de hipervínculo. Al hacer clic con el botón secundario o central del mouse no se activa este evento. Cuando el usuario mueve el puntero del mouse sobre un control con datos de tipo hipervínculo, el puntero se convierte en un icono que representa una mano. Cuando el usuario presiona el botón del mouse, se activa el hipervínculo y se produce el evento Click.

•	Seleccionar un elemento de un cuadro combinado o de un cuadro de lista ya sea presionando las teclas de flechas y luego ENTRAR o con el botón del mouse.

•	Presionar ESPACIO cuando el enfoque está en un botón de comando, en una casilla de verificación, en un botón de opción o en un botón de alternar.

•	Presionar la tecla ENTRAR en un formulario que tiene un botón de comando cuya propiedad Predeterminado (Default) tiene el valor Sí.

•	Presionar la tecla ESC en un formulario que tiene un botón de comando cuya propiedad Cancelar (Cancel) tiene el valor Sí.

•	Presionar la tecla de acceso de un control. Por ejemplo, si la propiedad Título (Caption) de un botón de comando está establecida a &Ir, se producirá el evento al presionar ALT+I.

Normalmente adjuntará una macro o procedimiento de evento Click a un botón de comando con el fin de ejecutar comandos y acciones de tipo comando. Para el resto de los controles a los que se aplica, puede emplear este evento para ejecutar acciones como respuesta a una de las situaciones descritas anteriormente.

Sólo para los botones de comando, Microsoft Access ejecutará la macro o procedimiento de evento especificado en la propiedad AlHacerClic (OnClick) cuando el usuario elija el botón de comando presionando la tecla ENTRAR o una tecla de acceso. La macro o procedimiento de evento se ejecuta una vez. Si desea que se ejecute repetidamente mientras esté presionado el botón de comando, establezca a Sí la propiedad RepeticiónAutomática (AutoRepeat) del botón. Para los demás tipos de controles, deberá hacer clic con el botón del mouse para que se produzca el evento Click.

El evento Click se produce para un botón de comando en el momento de elegirlo. Además, si el botón no tiene ya el enfoque cuando se elige, se producirán los eventos Enter y GotFocus para el mismo antes del evento Click.

Al hacer doble clic en un control se producen los eventos DblClick y Click. Para los botones de comando, al hacer doble clic se producen los eventos siguientes, en el orden indicado:

MouseDown ⇒ MouseUp ⇒ Click ⇒ DblClick ⇒ Click

Puede utilizar la acción CancelarEvento en una macro con DblClick para cancelar el segundo evento Click. Para obtener más información, consulte el tema del evento DblClick.

El evento Click se produce para un grupo de opciones después de cambiar el valor de alguno de los controles que contiene haciendo clic en él. Por ejemplo, al hacer clic en un botón de alternar, en un botón de opción o en una casilla de verificación de grupo de opciones, el evento Click se produce para el grupo de opciones después de los eventos BeforeUpdate y AfterUpdate del grupo.

Sugerencia   Para distinguir entre los botones primario, secundario y central del mouse, use los eventos MouseDown y MouseUp.


Evento Click - Macros
Evento Click — Macros

Para ejecutar una macro cuando se produzca el evento Click, establezca la propiedad AlHacerClic (OnClick) al nombre de la macro.

Comentarios

Las macros con Click se utilizan a menudo para ejecutar las acciones asociadas a cada botón de comando de un formulario. Por ejemplo, al hacer clic en un botón de comando de un formulario, el usuario puede imprimir un informe con los registros del formulario. Haciendo clic en otro, puede abrir un formulario relacionado.

No es posible utilizar la acción CancelarEvento en una macro con Click para cancelar el evento Click.


Evento Click - Procedimientos de evento
Evento Click — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Click, establezca la propiedad AlHacerClic (OnClick) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Click( )

Private Sub nombrecontrol_Click( )

El procedimiento de evento Click tiene el siguiente argumento.

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento Click se desea ejecutar.
Comentarios

Cuando el usuario hace doble clic en un cuadro de lista se producen los eventos siguientes, en el orden indicado:

MouseDown ⇒ MouseUp ⇒ Click ⇒ DblClick

En el caso de otros controles el orden de los eventos es similar. Al crear procedimientos para estos eventos relacionados, asegúrese de que el código de unos no está en conflicto con el de otros. (Por ejemplo, el procedimiento del evento DblClick no debe contener código que cancele las acciones ejecutadas en el procedimiento del evento Click).

No es posible cancelar el evento Click.


Evento Click - Ejemplo de procedimiento de evento
Evento Click — Ejemplo de procedimiento de evento

En el ejemplo siguiente, el procedimiento de evento Click está asociado a la casilla de verificación SóloLectura. El procedimiento de evento establece las propiedades Activado (Enabled) y Bloqueado (Locked) de otro control del formulario, el cuadro de texto Cantidad. Cuando se hace clic en la casilla de verificación, el procedimiento de evento comprueba si se está activando o desactivando la casilla y establece las propiedades del cuadro de texto para permitir o no su edición, según corresponda.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga una casilla de verificación llamada SóloLectura y un cuadro de texto llamado Cantidad.

Private Sub SóloLectura_Click()

With Me!Cantidad

If Me!SóloLectura = True Then	' Si se está activando la casilla.

.Enabled = False	' Deshabilita la edición.

.Locked = True

Else	' Si se está desactivando la casilla.

.Enabled = True	' Habilita la edición.

.Locked = False

End If

End With

End Sub


Evento DblClick

El evento DblClick se produce cuando el usuario presiona y suelta dos veces el botón secundario del mouse sobre un objeto dentro del límite de tiempo de doble clic del sistema.

En un formulario, el evento DblClick se produce cuando el usuario hace doble clic en un en una zona en blanco o en un selector de registro del formulario. Para un control, este evento se produce cuando el usuario hace doble clic en él o en su etiqueta en la vista Formulario. El evento DblClick se produce cuando el usuario hace doble clic en el formulario o control, pero antes de que se ejecute la acción del doble clic (por ejemplo, antes de que Microsoft Access seleccione la palabra de un cuadro de texto en la que se encuentre el punto de inserción).

Notas

•	El evento DblClick se aplica sólo a formularios, secciones de formulario y controles de formularios, y no a los controles de un informe.

•	Este evento no se aplica a las casillas de verificación, botones de opción ni botones de alternar de un grupo de opciones. Sólo se aplica al grupo de opciones en sí.

•	Este evento no se aplica a la etiqueta asociada a un control, como por ejemplo la etiqueta de un cuadro de texto. Sólo se aplica a las etiquetas "independientes". Hacer doble clic en una etiqueta adjunta tiene el mismo efecto que hacerlo en el control asociado. Se producirán los eventos normales para el control, y ninguno para la etiqueta adjunta.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlHacerDobleClic (OnDblClick) al nombre de la macro o [Procedimiento de evento].

En el caso de los controles, el resultado de hacer doble clic depende del tipo de control. Por ejemplo, al hacer doble clic en una palabra de un cuadro de texto se selecciona la palabra completa. Al hacer doble clic en un control que contiene un objeto OLE se inicia la aplicación que creó el objeto, permitiendo su modificación.

Si el evento DblClick no se produce dentro del límite de tiempo de doble clic del sistema, el formulario, sección o control reconocerá dos eventos Click en lugar de un solo evento DblClick. El límite de tiempo de doble clic depende de la configuración de Velocidad al hacer doble clic, en la ficha Botones de la opción Mouse del Panel de control de Windows.

Mediante la ejecución de una macro o procedimiento de evento cuando se produce el evento DblClick puede, por ejemplo, abrir una ventana o documento haciendo doble clic en un icono.

Al hacer doble clic en un control se producen ambos eventos Click y DblClick. Si el control no tiene ya el enfoque al hacer doble clic en él, se producirán los eventos Enter y GotFocus del control antes de los eventos Click y DblClick.

En el caso de los objetos que reciben eventos del mouse, los eventos se producen en el orden siguiente:

MouseDown ⇒ MouseUp ⇒ Click ⇒ DblClick

Al hacer doble clic en un botón de comando, se producen los eventos siguientes, en el orden indicado:

MouseDown ⇒ MouseUp ⇒ Click ⇒ DblClick ⇒ MouseUp ⇒ Click

El segundo clic puede no tener ningún efecto (por ejemplo, si la macro o procedimiento de evento Click abre un cuadro de diálogo modal como respuesta al primer evento Click). Para evitar que se ejecute la macro o procedimiento de evento del segundo evento Clic, incluya una acción CancelarEvento en la macro con DblClick, o use el argumento Cancel en el procedimiento de evento DblClick. Observe que, en general, no debe emplearse el doble clic en un botón de comando.

Al hacer doble clic en cualquier control que no sea un botón de comando, no se producirá el segundo evento Click.


Evento DblClick - Macros
Evento DblClick — Macros

Para ejecutar una macro cuando se produzca el evento DblClick, establezca la propiedad AlHacerDobleClic (OnDblClick) al nombre de la macro.

Comentarios

Mediante la ejecución de una macro cuando se produce el evento DblClick puede, por ejemplo, modificar el comportamiento de doble clic predeterminado de un control. Por ejemplo, puede ejecutar una macro antes de que un servidor OLE se abra como respuesta a un doble clic en un objeto incrustado. La macro podría mostrar un mensaje preguntando al usuario si desea imprimir o modificar el objeto y podría utilizar una función definida por el usuario para imprimirlo.

También puede usar el evento DblClick para permitir cerrar un cuadro de diálogo haciendo doble clic en un control, en lugar de al hacer clic en el botón Aceptar. La macro de DblClick ejecutaría la acción Cerrar del cuadro de diálogo. También puede hacer que la macro oculte el cuadro de diálogo, usando la acción EstablecerValor para establecer al valor No la propiedad Visible del cuadro de diálogo.

Puede usar la acción CancelarEvento en una macro con DblClick para cancelar el comportamiento de doble clic predeterminado del control. En el ejemplo anterior, si el usuario desea imprimir el objeto OLE en lugar de modificarlo, se usará una función definida por el usuario para imprimirlo y luego la acción CancelarEvento para cancelar la apertura de la aplicación OLE.


Evento DblClick - Procedimientos de evento
Evento DblClick — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento DblClick, establezca a [Procedimiento de evento] la propiedad AlHacerDobleClic (OnDblClick) y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_DblClick(Cancel As Integer)

Private Sub nombrecontrol_DblClick(Cancel As Integer)

El procedimiento de evento DblClick tiene los argumentos siguientes.

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento DblClick se desea ejecutar.
Cancel	El valor determina si se produce el evento DblClick. Cuando el argumento Cancel es True (–1), se cancela el evento DblClick.
Comentarios

Puede usar un procedimiento de evento DblClick para modificar el comportamiento de doble clic predeterminado de un control. Por ejemplo, puede hacer que el procedimiento de evento se ejecute como respuesta a un doble clic en un objeto incrustado antes de que se abra un servidor OLE. El procedimiento de evento podría mostrar un mensaje preguntando al usuario si desea imprimir o modificar el objeto y podría utilizar una función definida por el usuario para imprimirlo. Si el usuario decide imprimir el objeto en lugar de modificarlo, el procedimiento puede imprimirlo y luego usar el argumento Cancel para cancelar la apertura del servidor OLE.

Al crear procedimientos de evento para los eventos MouseDown, MouseUp, Click y DblClick, asegúrese de que su código no está en conflicto. (Por ejemplo, el procedimiento del evento Click no debe contener código que cancele acciones ejecutadas en el procedimiento de evento DblClick).

Al hacer doble clic en un botón de comando, se producen los eventos siguientes, en el orden indicado:

MouseDown ⇒ MouseUp ⇒ Click ⇒ DblClick ⇒ MouseUp ⇒ Click

Para evitar que se produzca el segundo evento Click, puede establecer True (–1) en el argumento Cancel, o usar el método CancelEvent del objeto DoCmd en el procedimiento de evento DblClick. Si no cancela el segundo evento Click, se ejecutará de nuevo el código del procedimiento de evento Click. En el ejemplo siguiente se cancela el segundo evento Click:

Private Sub BotComando_DblClick(Cancel As Integer)

Cancel = True	' Cancela el segundo evento Click.

End Sub


Evento DblClick - Ejemplo de procedimiento de evento
Evento DblClick — Ejemplo de procedimiento de evento

En el ejemplo siguiente se muestra la forma de utilizar un procedimiento de evento DblClick para abrir un formulario en el que aparecen registros de la tabla que es el origen de las filas de un cuadro combinado. Cuando el usuario hace doble clic en el cuadro combinado Comercial del formulario Pedidos, aparece el formulario Empleados mostrando el registro del empleado seleccionado en el cuadro combinado.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario llamado Pedidos que contenga un cuadro combinado llamado IdEmpleado. El cuadro combinado deberá tener como origen de filas la misma tabla origen del formulario Empleados (o una consulta basada en ella).

Private Sub IdEmpleado_DblClick(Cancel As Integer)

DoCmd.OpenForm "Empleados", , , _

"IdEmpleado = Forms!Pedidos!IdEmpleado"

End Sub


Eventos Enter y Exit

•	El evento Enter se produce antes de que un control reciba efectivamente el enfoque proveniente de otro control del mismo formulario.

•	El evento Exit se produce inmediatamente antes de que un control pierda el enfoque en favor de otro control del mismo formulario.

Notas

•	Los eventos Enter y Exit sólo se aplican a los controles de los formularios, y no a los de los informes.

•	Estos eventos no se aplican a las casillas de verificación, botones de opción ni botones de alternar de un grupo de opciones. Sólo se aplican al grupo de opciones en sí.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AlEntrar (OnEnter) o AlSalir (OnExit) al nombre de la macro o a [Procedimiento de evento].

Como el evento Enter se produce antes de que el enfoque se traslade al control, puede utilizar una macro o procedimiento de evento asociado a este evento para mostrar instrucciones. Por ejemplo, podría presentar un pequeño formulario o cuadro de mensaje que identifique el tipo de datos que contiene normalmente el control o que dé instrucciones sobre la forma de usarlo.

El evento Enter se produce antes del evento GotFocus. El evento Exit se produce antes del evento LostFocus.

A diferencia de los eventos GotFocus y LostFocus, Enter y Exit no se producen cuando un formulario recibe o pierde el enfoque. Por ejemplo, suponga que selecciona una casilla de verificación de un formulario y que luego hace clic en un informe. Al seleccionar la casilla se producirán los eventos Enter y GotFocus. Sin embargo, al hacer clic en el informe, sólo se producirá el evento LostFocus. El evento Exit no se produce (porque el enfoque se traslada a una ventana distinta). Si selecciona de nuevo la casilla de verificación del formulario para traerlo al frente, se producirá el evento GotFocus, pero no el evento Enter (porque el control tenía el enfoque la última vez que el formulario estuvo activo). El evento Exit sólo se produce al hacer clic en otro control del mismo formulario.

Si traslada el enfoque a un control que no tiene el enfoque dentro del formulario al que pertenece, se producirán los eventos Exit y LostFocus del control que tiene el enfoque en ese formulario antes que los eventos Enter y GotFocus del control al que se ha trasladado el enfoque.

Si utiliza el mouse para mover el enfoque de un control de un formulario principal a otro de un subformulario del mismo (que no tenga ya el enfoque en el subformulario), se producirán los eventos siguientes:

Exit (para el control del formulario principal)

 ⇓

LostFocus (para el control del formulario principal)

 ⇓

Enter (para el control del subformulario)

 ⇓

Exit (para el control del subformulario que tenía el enfoque)

 ⇓

LostFocus (para el control del subformulario que tenía el enfoque)

 ⇓

Enter (para el control del subformulario al que se ha trasladado el enfoque)

 ⇓

GotFocus (para el control del subformulario al que se ha trasladado el enfoque)

Si el control elegido en el subformulario ya tenía el enfoque, no se producirán sus eventos Enter ni GotFocus, pero sí el evento Enter del control subformulario. Si traslada el enfoque de un control de un subformulario a un control del formulario principal, no se producirán los eventos Exit y LostFocus del control del subformulario, sino sólo el evento Exit del mismo y los eventos Enter y GotFocus para el control del formulario principal.

Nota   A menudo se usa el mouse o una tecla tal como TAB para mover el enfoque a otro control. Esto hace que se produzcan eventos de mouse o de teclado, además de los eventos tratados en este tema.


Eventos Enter y Exit - Macros
Eventos Enter y Exit — Macros

Para ejecutar una macro cuando se produzcan los eventos Enter o Exit, establezca la propiedad AlEntrar (OnEnter) o AlSalir (OnExit) al nombre de la macro.

Comentarios

Cuando se producen los eventos Enter o Exit, puede ejecutar una macro que utilice una acción IrAControl para cambiar el orden de tabulación basándose en los datos actuales de un control. Por ejemplo, si el usuario escribe Soltero en el campo EstadoCivil, puede hacer que el enfoque no se traslade al campo NombreCónyuge.

Puede usar la acción CancelarEvento en la macro de Exit para cancelar la salida del control. No es posible usar CancelarEvento para cancelar el evento Enter, aunque sí puede usar la acción IrAControl en la macro de Enter para situar el enfoque en un control distinto.


Eventos Enter y Exit - Procedimientos de evento
Eventos Enter y Exit — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzcan los eventos Enter o Exit, establezca la propiedad AlEntrar (OnEnter) o AlSalir (OnExit) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub nombrecontrol_Enter( )

Private Sub nombrecontrol_Exit(Cancel As Integer)

El procedimiento de evento Enter tiene el argumento siguiente.

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento Enter se desea ejecutar.
El procedimiento de evento Exit tiene los argumentos siguientes.

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento Exit se desea ejecutar.
Cancel	Su valor determina si se produce el evento Exit. Cuando en Cancel se establece True (–1), se cancela en evento Exit
Comentarios

No es posible cancelar el evento Enter.


Eventos Enter y Exit - Ejemplo de procedimientos de evento
Eventos Enter y Exit — Ejemplo de procedimientos de evento

En el ejemplo siguiente hay dos procedimientos de evento asociados al cuadro de texto Apellidos. El procedimiento de evento Enter muestra un mensaje que especifica el tipo de datos que el usuario puede introducir en el cuadro de texto, y el procedimiento de evento Exit muestra un cuadro de diálogo preguntando al usuario si se deben guardar los cambios antes de que el enfoque pase a otro control. Si el usuario hace clic en el botón Cancelar, el argumento Cancel se establece a True (–1), con lo que el enfoque pasa al cuadro de texto sin guardar los cambios. Si el usuario elige el botón Aceptar, los cambios se guardan y el enfoque pasa a otro control.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga un cuadro de texto llamado Apellidos.

Private Sub Apellidos_Enter()

MsgBox "Escriba sus apellidos."

End Sub

Private Sub Apellidos_Exit(Cancel As Integer)

Dim strMsg As String

strMsg = "Ha especificado '" & Me!Apellidos & "' como sus apellidos." & _

vbCrLf & "¿Es correcto?"

If MsgBox(strMsg, vbYesNo) = vbNo Then

Cancel = True	' Cancela la salida.

Else

Exit Sub	' Guarda los cambios y sale.

End If

End Sub


Evento Format

El evento Format se produce cuando Microsoft Access determina qué datos pertenecen a una sección de un informe, pero antes de que Microsoft Access dé formato a la sección para su vista previa o su impresión.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlDarFormato (OnFormat) al nombre de la macro o [Procedimiento de evento].

Para cada sección de un informe se produce un evento Format. Esto permite relaizar cálculos complejos en cada momento usando datos de cada sección, incluidas las que no se imprimen.

Para las secciones de detalle de los informes, el evento Format se produce para cada registro de la sección inmediatamente antes de que Microsoft Access dé formato a los datos del registro. Una macro o procedimiento de evento Format tiene acceso a los datos del registro actual.

Para los encabezados de grupo de los informes, el evento Format se produce para cada nuevo grupo y una macro o procedimiento de evento Format tendrá acceso a los datos del encabezado de grupo y a los del primer registro de la sección de detalle. Para los pies de grupo, el evento Format se produce para cada nuevo grupo y una macro o procedimiento de evento Format tendrá acceso a los datos del pie de grupo y a los del último registro de la sección de detalle.

Mediante la ejecución de una macro o procedimiento de evento cuando se produce el evento Format puede, por ejemplo, usar los datos del registro actual para realizar cambios en el informe que afecten al diseño de la página. Por ejemplo, puede mostrar u ocultar un mensaje de felicitación junto a las ventas mensuales de un comercial, dependiendo del total de las mismas. Después de mostrar u ocultar el mensaje, Microsoft Access dará formato a la sección con los valores de las propiedades de formato, como son Autoextensible (CanGrow), Autocomprimible (CanShrink), OcultarDuplicados (HideDuplicates), MantenerJuntos (KeepTogether) y Visible.

En el caso de cambios que no afecten al diseño de la página, o cuando los procedimientos de evento o macros sólo deban ejecutarse después de que los datos de la página tengan formato (por ejemplo, una macro que imprima los totales de la página), use el evento Print de la sección del informe.

En ocasiones, Microsoft Access debe volver a secciones anteriores de un informe para dar formato en varias pasadas. Cuando esto ocurre, el evento Retreat se produce al volver a una sección anterior y el evento Format se produce más de una vez por sección. Puede ejecutar una macro o procedimiento de evento cuando se produzca el evento Retreat para deshacer los cambios realizados al producirse el evento Format en esa sección. Esto es útil cuando la macro o procedimiento de evento ejecuta acciones que sólo deban realizarse una vez en cada sección, como calcular totales de página o controlar el tamaño de la sección.


Evento Format - Macros
Evento Format — Macros

Para ejecutar una macro cuando se produce el evento Format, establezca la propiedad AlDarFormato (OnFormat) al nombre de la macro.

Comentarios

Puede usar la propiedad NúmeroDeFormatos (FormatCount) para comprobar si se ha producido el evento Format más de una vez para una sección. Por ejemplo, si una sección no cabe en una página del informe y parte de ella pasa a la siguiente, el evento Format ocurrirá una vez para cada página, y en la propiedad NúmeroDeFormatos (FormatCount) se establecerá 2. Puede comprobar este valor para determinar el número de veces que se ha ejecutado una macro de Format para cada sección.

Puede usar la acción CancelarEvento en una macro de Format para cancelar el formato de una sección. Si cancela el formato, Microsoft Access no dará formato a la sección para imprimirla, e imprimirá en su lugar la sección siguiente. Puede usar la acción CancelarEvento para saltar una sección de un informe sin dejar un espacio en blanco al imprimirlo.


Evento Format - Procedimientos de evento
Evento Format — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Format, establezca la propiedad AlDarFormato (OnFormat) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub nombresección_Format(Cancel As Integer, FormatCount As Integer)

El procedimiento de evento Format tiene los argumentos siguientes.

Argumento	Descripción
nombresección	Nombre de la sección del informe cuyo procedimiento de evento Format se desea ejecutar.
Cancel	Su valor determina si se da formato a la sección. Al establecer True (–1) en el argumento Cancel se cancela el formato de la sección.
FormatCount	Valor de tipo Integer que especifica si el evento Format se ha producido más de una vez en una sección. Por ejemplo, si una sección no cabe en una página de un informe y parte de ella pasa a la página siguiente, Microsoft Access establecerá el argumento FormatCount al valor 2.
Comentarios

Si cancela el formato, Microsoft Access no dará formato a la sección para su impresión, e imprimirá en su lugar la sección siguiente. Puede usar este procedimiento de evento para saltar una sección de un informe sin dejar un espacio en blanco al imprimirlo.


Evento Format - Ejemplo de procedimiento de evento
Evento Format — Ejemplo de procedimiento de evento

En el ejemplo siguiente se muestra u oculta un mensaje de felicitación junto a un control calculado que muestra el total de ventas por agente comercial. En las secciones de los informes donde el total de ventas sea mayor que el objetivo, una etiqueta llamada Mensaje mostrará el texto "¡Felicidades! Ha alcanzado su objetivo de ventas" al imprimir la sección; y en las secciones donde el total sea inferior al objetivo, se ocultará la etiqueta.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un informe que contenga una etiqueta llamada Mensaje, un cuadro de texto llamado TotalFinal (control calculado que muestra el total de ventas) y una sección de detalle llamada DetalleVentas.

Private Sub DetalleVentas_Format(Cancel As Integer, _

FormatCount As Integer)

Const conObjetivoVentas = 1000

If Me!TotalFinal > conObjetivoVentas Then

Me!Mensaje.Visible = True

Else

Me!Mensaje.Visible = False

End If

End Sub


Eventos Open y Close

•	El evento Open se produce cuando se abre un formulario, pero antes de que se muestre el primer registro. En el caso de los informes, este evento se produce antes de que el informe se presente en vista preliminar o se imprima.

•	El evento Close se produce cuando un formulario o informe se cierra y se retira de la pantalla.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca las propiedades AlAbrir (OnOpen) o AlCerrar (OnClose) al nombre de la macro o a [Procedimiento de evento].

Mediante la ejecución de una macro o un procedimiento de evento cuando se produce el evento Open de un formulario puede, por ejemplo, cerrar otra ventana o situar el enfoque en un control determinado del formulario. También puede ejecutar una macro o procedimiento de evento que solicite la información necesaria antes de abrir o imprimir el formulario o informe. Por ejemplo, una macro o procedimiento de evento Open puede abrir un cuadro de diálogo personalizado en el que el usuario especifique los criterios para determinar el conjunto de registros que se van a mostrar en el formulario o el intervalo de fechas que se van a incluir en un informe.

El evento Open no se produce al activar un formulario ya abierto (por ejemplo, al situarse en el formulario desde otra ventana de Microsoft Access o al usar la acción AbrirFormulario en una macro para traer al frente el formulario abierto). Sin embargo, el evento Activate sí se produce en estas situaciones.

Al abrir un formulario basado en una consulta base, Microsoft Access ejecutará la consulta para el formulario antes de ejecutar la macro o procedimiento de evento Open. Sin embargo, al abrir un informe basado en una consulta base, Microsoft Access ejecutará la macro o procedimiento de evento Open antes de ejecutar la consulta para el informe. De este modo el usuario puede especificar criterios para el informe antes de abrirlo (por ejemplo, en un cuadro de diálogo personalizado que aparezca cuando se produce el evento Open).

Si su aplicación puede tener más de un formulario cargado a la vez, utilice los eventos Activate y Deactivate en lugar de Open para mostrar y ocultar las barras de herramientas personalizadas cuando el enfoque pasa a otro formulario.

El evento Open se produce antes del evento Load, que se activa al abrir un formulario y mostrar sus registros.

La primera vez que se abre un formulario se producen los eventos siguientes, en el orden indicado:

Open ⇒ Load ⇒ Resize ⇒ Activate ⇒ Current

El evento Close se produce después del evento Unload, que se activa después de cerrar el formulario pero antes de que desaparezca de la pantalla.

Al cerrar un formulario se producen los eventos siguientes, en el orden indicado:

Unload ⇒ Deactivate ⇒ Close

Cuando se produzca el evento Close puede abrir otra ventana o solicitar el nombre del usuario para crear una entrada de registro que indique quién ha utilizado el formulario o informe.

Para decidir si usar el evento Open o el evento Load para una macro o procedimiento de evento, una diferencia significativa a tener en cuenta es que Open puede cancelarse, pero Load no se puede cancelar. Por ejemplo, si va a generar dinámicamente un origen de registros para un formulario en un procedimiento de evento Open, podrá cancelar la apertura del formulario cuando no haya registros que se puedan mostrar. Del mismo modo, el evento Unload puede cancelarse, pero el evento Close no.


Eventos Open y Close - Macros
Eventos Open y Close — Macros

Para ejecutar una macro cuando se produzca el evento Open o Close, establezca las propiedades AlAbrir (OnOpen) o AlCerrar (OnClose) al nombre de la macro.

Comentarios

Puede usar la acción CancelarEvento en una macro con Open para cancelar la apertura del formulario o informe. No es posible usar la acción CancelarEvento en una macro con Close para cancelar el evento Close, aunque sí puede usarla en una macro que se ejecute cuando se produzca el evento Unload en un formulario, con lo que se cancelará su cierre.

Si desea hacer referencia a controles desde una macro con Open, primero deberá situar el enfoque en el control o registro correspondiente. Por ejemplo, para usar la acción EstablecerValor en una macro de Open con el fin de establecer el valor de un control de un formulario, primero deberá usar la acción IrAControl o IrARegistro para tener acceso al control o al registro que contiene el control.


Eventos Open y Close - Procedimientos de evento
Eventos Open y Close — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzcan los eventos Open o Close, establezca las propiedades AlAbrir (OnOpen) o AlCerrar (OnClose) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Open(Cancel As Integer)

Private Sub Report_Open(Cancel As Integer)

Private Sub Form_Close( )

Private Sub Report_Close( )

El procedimiento de evento Open tiene el argumento siguiente.

Argumento	Descripción
Cancel	Su valor determina si se produce la apertura del formulario o informe. Al establecer el argumento Cancel a True (–1) se cancela la apertura del formulario o informe.
Comentarios

No es posible cancelar el evento Close.

Si desea hacer referencia a controles en un procedimiento de evento Open, primero deberá situar el enfoque en el formulario o en el control o registro correspondiente, mediante el método SetFocus o los métodos GoToRecord o GoToControl del objeto DoCmd.

Si una aplicación sólo tiene un formulario cargado cada vez, puede incluir código para mostrar u ocultar una barra de herramientas en el procedimiento de evento Open del formulario. En el ejemplo siguiente se muestra la barra de herramientas MisHerramientas cuando se abre el formulario.

Sub Form_Open(Cancel As Integer)

DoCmd.ShowToolbar "MisHerramientas", acToolbarYes

End Sub


Eventos Open y Close - Ejemplo de procedimientos de evento
Eventos Open y Close — Ejemplo de procedimientos de evento

En el ejemplo siguiente se muestra la forma en que puede cancelar la apertura de un formulario cuando el usuario hace clic en un botón llamado No. Un cuadro de mensaje pregunta al usuario si desea introducir detalles del pedido. Si el usuario hace clic en No, no se abre el formulario Detalles del pedido.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario.

Private Sub Form_Open(Cancel As Integer)

Dim intReturn As Integer

intReturn = MsgBox("¿Introducir ahora los detalles del pedido?", vbYesNo)

Select Case intReturn

Case vbYes

DoCmd.OpenForm "Detalles del pedido"	' Abre el formulario Detalles del pedido.

Case vbNo

MsgBox "Recuerde introducir los detalles del pedido antes de las 5 P.M."

Cancel = True	' Cancela el evento Open.

End Select

End Sub


Evento Print

El evento Print se produce después de que se dé formato a los datos de una sección de un informe para imprimirlos, pero antes de su impresión.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlImprimir (OnPrint) al nombre de la macro o a [Procedimiento de evento].

En el caso de una sección de detalle de un informe, el evento Print se ejecuta para cada registro de la sección inmediatamente antes de que Microsoft Access imprima los datos del registro. La macro o procedimiento de evento Print tiene acceso a los datos de registro actual.

Para los encabezados de grupo de un informe, el evento Print se produce para cada nuevo grupo y la macro o procedimiento de evento Print tiene acceso a los datos del encabezado del grupo y a los del primer registro de la sección de detalle. Para los pies de grupo de un informe, el evento Print se produce para cada nuevo grupo y la macro o procedimiento de evento Print tiene acceso a los datos del pie del grupo y a los del último registro de la sección de detalle.

Sólo puede usar el evento Print para ejecutar una macro o un procedimiento de evento después de que Microsoft Access haya preparado los datos para su impresión en una página. Por ejemplo, puede calcular totales parciales para imprimirlos en el encabezado o en el pie de las páginas.

Para los cambios que afecten al diseño de la página, como por ejemplo mostrar u ocultar controles, utilice el evento Format.

En evento Print sólo se produce para las secciones que se imprimen realmente. Si necesita tener acceso a datos de secciones que no se van a imprimir (por ejemplo, para mantener una suma parcial, pero imprimiendo sólo algunas páginas), utilice el evento Format.

El evento Page se produce después de todos los eventos Format del informe y de todos los eventos Print de una página, pero antes de que la página se imprima.


Evento Print - Macros
Evento Print — Macros

Para ejecutar una macro cuando se produzca el evento Print, establezca la propiedad AlImprimir (OnPrint) al nombre de la macro.

Comentarios

Puede usar la propiedad NúmeroImpresiones (PrintCount) para comprobar si el evento Print se ha producido más de una vez para un registro. Por ejemplo, si parte de un registro se imprime en una página y el resto en la siguiente, el evento Print se producirá dos veces, y la propiedad NúmeroImpresiones (PrintCount) tendrá el valor 2. Puede comprobar el valor de NúmeroImpresiones (PrintCount) para los casos en que las macros de Print sólo deban ejecutarse una vez por cada registro, como por ejemplo una macro que muestre los totales de los registros de una página en el pie de página.

Puede usar la acción CancelarEvento en una macro con Print para cancelar la impresión de una sección. Al imprimir el informe, Microsoft Access dejará un espacio en blanco en el lugar donde hubiera ido la sección. Puede usar la acción CancelarEvento para saltar un registro en un informe y dejar en su lugar un espacio en blanco en la página.

La macro Print sólo se ejecuta para las secciones que se imprimen realmente.

Nota   No es posible utilizar una macro de Print para establecer las propiedades de ningún objeto.


Evento Print - Procedimientos de evento
Evento Print — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Print, establezca la propiedad AlImprimir (OnPrint) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub nombresección_Print(Cancel As Integer, PrintCount As Integer)

El procedimiento de evento Print tiene los argumentos siguientes.

Argumento	Descripción
nombresección	Nombre de la sección del informe cuyo procedimiento de evento Print se desea ejecutar.
Cancel	Su valor determina si se produce la impresión de la sección. Al establecer el argumento Cancel a True (–1) se cancela la impresión de la sección.
PrintCount	Valor de tipo Integer que especifica si el evento Print se ha producido más de una vez para un registro. Por ejemplo, si parte de un registro se imprime en una página y el resto en la siguiente, el evento Print se producirá dos veces, y Microsoft Access establecerá el argumento PrintCount al valor 2.
Comentarios

Para cancelar la impresión de la sección, establezca el argumento Cancel a True (–1), o bien use el método CancelEvent del objeto DoCmd. Microsoft Access dejará una zona en blanco en la página donde hubiera correspondido imprimir la sección. Puede usar el método CancelEvent o el argumento Cancel para saltar un registro en un informe y dejar en blanco su lugar al imprimirlo.

Nota   No puede usar un procedimiento de evento Print para establecer las propiedades de ningún objeto.


Evento Print - Ejemplo de procedimiento de evento
Evento Print — Ejemplo de procedimiento de evento

En el ejemplo siguiente se comprueba el argumento PrintCount para determinar el número de veces que se ha producido el evento Print. Si es mayor que uno, el evento Print se cancela para la sección.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un informe que contenga una sección llamada DetallesCliente.

Private Sub DetallesCliente_Print(Cancel As Integer, _

PrintCount As Integer)

If PrintCount > 1 Then Cancel = True

End Sub


Evento Current

El evento Current se produce cuando el enfoque se sitúa en un registro, haciendo que sea el registro actual, o cuando el formulario se actualiza o se realiza para él una nueva consulta.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlActivarRegistro (OnCurrent) al nombre de la macro o a [Procedimiento de evento].

Este evento se produce al abrir un formulario y también siempre que el enfoque deja un registro y pasa a otro. Microsoft Access ejecuta la macro o procedimiento de evento Current antes de que aparezca el primer registro (o el siguiente).

Mediante la ejecución de una macro o procedimiento de evento cuando se produce el evento Current de un formulario puede, por ejemplo, mostrar un mensaje o sincronizar los registros de otro formulario relacionado con el registro activo. Por ejemplo, cuando el registro de un cliente es el registro activo, puede mostrar su pedido anterior. Cuando el registro de un proveedor sea el activo, puede mostrar los productos que fabrica en el formulario Proveedores. También puede realizar cálculos basándose en el registro actual o cambiar la forma de responder a los datos del mismo.

Si la macro o procedimiento de evento ejecuta una acción IrAControl o IrARegistro o el método correspondiente (GoToControl o GoToRecord) del objeto DoCmd como respuesta a un evento Open, se producirá el evento Current.

El evento Current también se produce cuando se actualiza un formulario o se realiza una nueva consulta sobre su tabla o consulta base. Por ejemplo, esto ocurre al hacer clic en Quitar filtro u ordenar en el menú Registros o al usar la acción NuevaConsulta en una macro o el método Requery en el código de Visual Basic.

La primera vez que se abre un formulario, se producen los eventos siguientes, en el orden indicado:

Open ⇒ Load ⇒ Resize ⇒ Activate ⇒ Current


Evento Current - Macros
Evento Current — Macros

Para ejecutar una macro cuando se produzca el evento Current, establezca la propiedad AlActivarRegistro (OnCurrent) al nombre de la macro.

Comentarios

No es posible utilizar la acción CancelarEvento en una macro con Current para cancelar este evento. Sin embargo, puede usar la acción IrARegistro para colocar el enfoque en un registro distinto.


Evento Current - Procedimientos de evento
Evento Current — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Current, establezca la propiedad AlActivarRegistro (OnCurrent) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Current( )

Comentarios

No es posible ejecutar este evento con el método CancelEvent del objeto DoCmd. Sin embargo, puede usar el método GoToRecord del objeto DoCmd para situarse en un registro distinto.


Evento Current - Ejemplo de procedimiento de evento
Evento Current — Ejemplo de procedimiento de evento

En el ejemplo siguiente, un procedimiento de evento Current comprueba el estado de un botón de opción llamado Obsoleto. Si se selecciona el botón, el fondo del campo NombreProducto se muestra de color rojo para indicar que el producto ya no se fabrica.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga una opción llamada Obsoleto y un cuadro de texto llamado NombreProducto.

Private Sub Form_Current()

If Me!Obsoleto Then

Me!NombreProducto.BackColor = 255

EndIf

End Sub

En el siguiente ejemplo se establece la propiedad Título (Caption) de un formulario al contenido del campo NombreProveedor. Al pasar el enfoque de un registro a otro, la barra de título indica el nombre del proveedor actual.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga un cuadro de texto llamado NombreProveedor.

Private Sub Form_Current()

Me.Caption = Me!NombreProveedor

End Sub


Eventos Activate y Deactivate

•	El evento Activate se produce cuando un formulario o informe recibe el enfoque y se convierte en la ventana activa.

•	El evento Deactivate se produce cuando un formulario o informe pierde el enfoque en favor de una ventana Tabla, Consulta, Formulario, Informe, Macro o Módulo, o de la ventana Base de datos.

Nota   El evento Deactivate no se produce cuando un formulario o informe pierde el enfoque en favor de un cuadro de diálogo, de un formulario en cuya propiedad Emergente (PopUp) esté establecido Sí, o de una ventana de otra aplicación.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AlActivar (OnActivate) o AlDesactivar (OnDeactivate) al nombre de la macro o a [Procedimiento de evento].

Para hacer que un formulario o informe sea el activo, puede abrirlo, hacer clic en uno de sus controles o utilizar el método SetFocus de Visual Basic (sólo para formularios).

El evento Activate sólo puede producirse cuando el formulario o informe está visible.

El evento Activate se produce antes del evento GotFocus; y el evento Deactivate después del evento LostFocus.

Al alternar entre dos formularios abiertos, se produce el evento Deactivate para el formulario del que se parte y el evento Activate para el formulario al que se llega. Si los formularios no contienen ningún control visible y habilitado, el evento LostFocus se producirá para el primero antes del evento Deactivate, y el evento GotFocus se produce para el segundo después del evento Activate.

La primera vez que se abre un formulario, se producen los eventos siguientes, en el orden indicado:

Open ⇒ Load ⇒ Resize ⇒ Activate ⇒ Current

Al cerrar un formulario, se producen los eventos siguientes, en el orden indicado:

Unload ⇒ Deactivate ⇒ Close


Eventos Activate y Deactivate - Macros
Eventos Activate y Deactivate — Macros

Para ejecutar una macro cuando se producen los eventos Activate o Deactivate, establezca en la propiedad AlActivar (OnActivate) o AlDesactivar (OnDeactivate) el nombre de la macro.

Comentarios

Puede usar la acción MostrarBarraDeHerramientas en una macro de Activate o Deactivate para mostrar u ocultar una barra de herramientas personalizada. Use el evento Activate o Deactivate para ello cuando tenga más de un formulario cargado a la vez. Si sólo usa un formulario cada vez, puede usar los eventos Open y Close.

Si usa una macro de Deactivate para ocultar una barra de herramientas personalizada en un formulario, asegúrese también de ocultarla como respuesta al evento Unload, ya que el evento Deactivate no se produce cuando se transfiere un formulario. No use los eventos GotFocus y LostFocus para mostrar u ocultar barras de herramientas personalizadas en un formulario, ya que no se producen en los formularios que contienen controles habilitados.

No es posible usar la acción CancelarEvento en una macro de Activate o Deactivate.


Eventos Activate y Deactivate - Procedimientos de evento
Eventos Activate y Deactivate — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Activate o Deactivate, establezca la propiedad AlActivar (OnActivate) o AlDesactivar (OnDeactivate) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Activate( )

Private Sub Report_Activate( )

Private Sub Form_Deactivate( )

Private Sub Report_Deactivate( )

Comentarios

Puede usar procedimientos de evento Activate y Deactivate para mostrar y ocultar barras de herramientas personalizadas. Si usa un procedimiento de evento Deactivate para ocultar una barra de herramientas personalizada de un formulario, asegúrese también de ocultarla como respuesta al evento Unload del formulario, ya que el evento Deactivate no se produce cuando el formulario se transfiere. No use los eventos GotFocus o LostFocus para mostrar u ocultar una barra de herramientas en un formulario, ya que estos eventos no se activan para los formularios que contienen controles habilitados.

No es posible cancelar los eventos Activate o Deactivate.


Eventos Activate y Deactivate - Ejemplo de procedimientos de evento
Eventos Activate y Deactivate — Ejemplo de procedimientos de evento

En el ejemplo siguiente se muestra cómo mostrar una barra de herramientas personalizada llamada BarraPersonalizada cuando un formulario recibe el enfoque y ocultarla cuando el enfoque pasa a otra ventana.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga una barra de herramientas personalizada llamada BarraPersonalizada.

Private Sub Form_Activate()

' Muestra la barra de herramientas personalizada.

DoCmd.ShowToolbar "BarraPersonalizada", acToolbarYes

End Sub

Private Sub Form_Deactivate()

' Oculta la barra de herramientas personalizada.

DoCmd.ShowToolbar "BarraPersonalizada", acToolbarNo

End Sub


Evento Change

El evento Change se produce cuando cambia el contenido de un cuadro de texto o la porción de texto de un cuadro combinado. También ocurre cuando se mueve de una página a otra en un control ficha. Ejemplos de este evento son la introducción directa de un carácter en el cuadro de texto o combinado o la modificación de la propiedad Texto (Text) del control con una macro o con Visual Basic.

Notas

•	Cuando se establece el valor de un control con una macro o con Visual Basic, no se activa este evento para el control. Para ello es necesario escribir los datos directamente en el control o establecer su propiedad Texto (Text).

•	Este evento sólo se aplica a los controles de formularios, y no a los de informes.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlCambiar (OnChange) al nombre de la macro o a [Procedimiento de evento].

Ejecutando una macro o procedimiento de evento cuando se produce un evento Change, puede coordinar la presentación de los datos entre controles. También puede mostrar datos o una fórmula en un control y el resultado en otro.

El evento Change no se produce cuando cambia un valor en un control calculado, ni al seleccionar un elemento en la lista de un cuadro combinado.

Nota   Un evento Change puede provocar una sucesión de eventos en cascada. Esto ocurre cuando una macro o procedimiento de evento que se ejecuta como respuesta al evento Change del control altera el contenido del mismo (por ejemplo, cambiando el valor de una propiedad que determina el valor del control, como la propiedad Text de un cuadro de texto). Para evitar que ocurran eventos en cascada:

•	Si es posible, evite asociar a un control una macro o procedimiento de evento Change que altere su contenido.

•	Evite crear dos o más controles cuyos eventos Change se afecten entre sí, como por ejemplo dos cuadros de texto que se actualicen mutuamente.

Cuando se modifican los datos de un cuadro de texto o combinado con el teclado, se producen eventos de teclado además de los eventos de control, tales como Change. Por ejemplo, si se sitúa en un nuevo registro y escribe un carácter ANSI en un cuadro de texto del mismo, se producirán los eventos siguientes, en el orden indicado:

KeyDown ⇒ KeyPress ⇒ BeforeInsert ⇒ Change ⇒ KeyUp

Los eventos BeforeUpdate y AfterUpdate del control cuadro de texto o cuadro combinado se producen después de introducir los datos nuevos o modificados y pasar a otro control (o después de hacer clic en el comando Guardar registro del menú Registros), y por lo tanto después de todos los eventos Change del control.

En los cuadros combinados que tengan establecido Sí en la propiedad LimitarALista (LimitToList), el evento NotInList se produce después de introducir un evento que no está en la lista e intentar pasar a otro control o guardar el registro, y después de todos los eventos Change del cuadro combinado. En este caso, los eventos BeforeUpdate y AfterUpdate del cuadro combinado no tienen lugar, ya que Microsoft Access no aceptará valores que no estén en la lista.


Evento Change - Macros
Evento Change — Macros

Para ejecutar una macro cuando se produzca el evento Change, establezca en la propiedad AlCambiar (OnChange) el nombre de la macro.

Comentarios

Puede usar una macro de Change para sincronizar los datos de dos controles: cuando se produzca un cambio en un control, puede reflejarlo en el otro.

No es posible usar la acción CancelarEvento en una macro de Change.


Evento Change - Procedimientos de evento
Evento Change — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Change, establezca la propiedad AlCambiar (OnChange) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub nombrecontrol_Change( )

El procedimiento de evento Change tiene el siguiente argumento:

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento Change se desea ejecutar.
Comentarios

No es posible cancelar el evento Change.

Para no producir una sucesión de eventos en cascada, evite crear para un control un procedimiento de evento Change que altere su contenido (por ejemplo estableciendo su propiedad Texto (Text)). Si lo hace, asegúrese de establecer una variable que impida efectuar más cambios mientras se realiza el cambio actual.


Evento Change - Ejemplo de procedimientos de evento
Evento Change — Ejemplo de procedimientos de evento

En el ejemplo siguiente se cuenta el número de caracteres introducidos en un cuadro de texto. Si es superior a tres, se muestra un mensaje y se comienza la cuenta desde cero.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario llamado Pedidos que contenga un cuadro de texto llamado RegiónEnvío.

Private Sub RegiónEnvío_Change()

' Declara la variable como estática para conservar el valor entre llamadas.

Static intLetras As Integer

' Comprueba el número de letras introducido.

' Si es mayor que 3, restablece el valor del cuadro de texto.

If intLetras < 3 Then

intLetras = intLetras + 1

Else

MsgBox "Sólo se permiten tres caracteres."

intLetras = 0

Forms!Pedidos!RegiónEnvío.Undo

End If

End Sub


Evento Error

El evento Error se genera cuando se produce un error en tiempo de ejecución en Microsoft Access mientras un formulario o informe tiene el enfoque. Aquí se incluyen los errores del motor de base de datos Microsoft Jet, pero no los errores en tiempo de ejecución de Visual Basic.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlOcurrirError (OnError) al nombre de la macro o a [Procedimiento de evento].

Ejecutando un procedimiento de evento o una macro cuando se produce un evento Error, puede interceptar un mensaje de error de Microsoft Access y mostrar un mensaje personalizado que tenga un significado más acorde con la aplicación.


Evento Error - Macros
Evento Error — Macros

Para ejecutar una macro cuando se produzca en evento Error, establezca la propiedad AlOcurrirError (OnError) al nombre de la macro.

Comentarios

Puede usar una macro de Error para mostrar un mensaje general siempre que se produzca un error en tiempo de ejecución. Sin embargo, las macros no pueden devolver el código de error ni determinar el error sucedido, por lo que normalmente con este evento se usan procedimientos de evento.

No es posible usar la acción CancelarEvento en una macro de Error.


Evento Error - Procedimientos de evento
Evento Error — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Error, establezca la propiedad AlOcurrirError (OnError) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Error(DataErr As Integer, Response As Integer)

Private Sub Report_Error(DataErr As Integer, Response As Integer)

El procedimiento de evento Error tiene los siguientes argumentos:

Argumento	Descripción
DataErr	Código de error que devuelve el objeto Err cuando se produce un error. Puede usar el argumento DataErr con la función Error para asignar al número el mensaje de error correspondiente.
Response	Su valor determina si se muestra o no un mensaje de error. El argumento Response puede ser una de las siguientes constantes intrínsecas.
	Constante	Descripción
	acDataErrContinue	Ignora el error y continúa sin mostrar el mensaje de error predeterminado de Microsoft Access. Puede mostrar un mensaje de error personalizado en lugar del predeterminado.
	acDataErrDisplay	(Predeterminada) Muestra el mensaje de error predeterminado de Microsoft Access.
Comentarios

No es posible cancelar el evento Error.


Evento Error - Ejemplo de procedimientos de evento
Evento Error — Ejemplo de procedimientos de evento

En el ejemplo siguiente se muestra la forma de reemplazar un mensaje de error predeterminado con uno personalizado. Cuando Microsoft Access devuelva un mensaje de error indicando que ha encontrado una clave duplicada (código de error 3022), este procedimiento de evento muestra un mensaje que da al usuario información más relacionada con la aplicación.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario basado en una tabla con un identificador de empleado único como clave de cada registro.

Private Sub Form_Error(DataErr As Integer, Response As Integer)

Const conDuplicateKey = 3022

Dim strMsg As String

If DataErr = conDuplicateKey Then

Response = acDataErrContinue

strMsg = "Cada registro de empleado debe tener un " _

& "número identificador único. Compruebe sus datos."

MsgBox strMsg

End If

End Sub


Eventos GotFocus y LostFocus

•	El evento GotFocus se produce cuando un formulario o control recibe el enfoque.

•	El evento LostFocus se produce cuando un formulario o control pierde el enfoque.

Nota   Los eventos GotFocus y LostFocus sólo se aplican a los formularios y controles de formularios, y no a los controles de un informe.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AlRecibirEnfoque (OnGotFocus) o AlPerderEnfoque (OnLostFocus) al nombre de la macro o a [Procedimiento de evento].

Estos eventos se producen cuando el enfoque se desplaza como respuesta a una acción del usuario, como presionar la tecla TAB o hacer clic en el objeto; o cuando se usa el método SetFocus en Visual Basic o las acciones SeleccionarObjeto, IrARegistro, IrAControl o IrAPágina en una macro.

Un control sólo puede recibir el enfoque cuando en sus propiedades Visible y Activado (Enabled) tiene establecido Sí. Un formulario sólo podrá recibir el enfoque cuando no contenga controles, o cuando todos sus controles visibles estén deshabilitados. Si un formulario contiene algún control visible y activado, el evento GotFocus no puede producirse para él.

Puede especificar lo que debe ocurrir cuando un formulario o control reciba el enfoque ejecutando una macro o procedimiento de evento GotFocus. Por ejemplo, asociando un procedimiento de evento GotFocus a cada control de un formulario, puede guiar al usuario por la aplicación mostrando breves instrucciones o mensajes en un cuadro de texto. También puede dar pistas visuales habilitando, deshabilitando o mostrando controles que dependan del control que tenga el enfoque.

Nota   Para personalizar el orden en que el enfoque pasa de control a control en un formulario cuando se presiona la tecla TAB, establezca el orden de tabulación o especifique teclas de acceso a los controles.

El evento GotFocus se diferencia del evento Enter en que el primero se produce cada vez que un control recibe el enfoque. Por ejemplo, suponga que el usuario hace clic en una casilla de verificación de un formulario, que luego haga clic en un informe y que por último hace clic de nuevo en la casilla del formulario para traerlo a primer plano. El evento GotFocus se produce las dos veces que la casilla de verificación recibe el enfoque. Por el contrario, el evento Enter sólo se produce la primera vez que el usuario hace clic en la casilla de verificación. El evento GotFocus se produce después del evento Enter.

El evento LostFocus se diferencia del evento Exit en que el primero se produce cada vez que un control pierde el enfoque. El evento Exit sólo se produce cuando el control pierde el enfoque en favor de otro control del mismo formulario. LostFocus se produce después de Exit.

Si desplaza el enfoque a un control de un formulario que no lo tenía previamente, los eventos Exit y LostFocus del control que tenía el enfoque se producen antes que los eventos Enter y GotFocus del control que lo recibe.

Si usa el mouse para desplazar el enfoque de un control de un formulario principal a un control de un subformulario del mismo, se producirán los siguientes eventos:

Exit (para el control del formulario principal)

 ⇓

LostFocus (para el control del formulario principal)

 ⇓

Enter (para el control subformulario)

 ⇓

Exit (para el control del subformulario que tenía el enfoque)

 ⇓

LostFocus (para el control del subformulario que tenía el enfoque)

 ⇓

Enter (para el control del subformulario al que se mueve el enfoque)

 ⇓

GotFocus (para el control del subformulario al que se mueve el enfoque)

Si el control del subformulario elegido tenía ya el enfoque, no se producen sus eventos Enter ni GotFocus, aunque sí ocurre el evento Enter para el control subformulario. Si desplaza el enfoque de un control de un subformulario a un control del formulario principal, no se producirán los eventos Exit y LostFocus del control del subformulario, sino sólo el evento Exit para el control subformulario y los eventos Enter y GotFocus para el control del formulario principal.

Nota   A menudo se usa el mouse o una tecla tal como TAB para trasladar el enfoque a otro control. Esto provoca eventos de mouse o de teclado, además de los tratados en este tema.

Al alternar entre dos formularios abiertos, el evento Deactivate se produce para el primer formulario, y el evento Activate para el segundo. Si los formularios no contienen ningún control visible y habilitado, se producirá el evento LostFocus para el primer formulario antes del evento Deactivate, y el evento GotFocus para el segundo después del evento Activate.


Eventos GotFocus y LostFocus - Procedimientos de evento
Eventos GotFocus y LostFocus — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento GotFocus o LostFocus, establezca la propiedad AlRecibirEnfoque (OnGotFocus) o AlPerderEnfoque (OnLostFocus) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_GotFocus( )

Private Sub nombrecontrol_GotFocus( )

Private Sub Form_LostFocus( )

Private Sub nombrecontrol_LostFocus( )

Los procedimientos de evento GotFocus y LostFocus tienen el argumento siguiente:

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento GotFocus o LostFocus se desea ejecutar.
Comentarios

Puede usar un procedimiento de evento LostFocus para validar los datos introducidos cuando el usuario retira el enfoque de un control. También puede deshacer o modificar las condiciones establecidas en el procedimiento de evento GotFocus del objeto.

Otros usos para los procedimientos de evento LostFocus y GotFocus son habilitar, deshabilitar, ocultar y mostrar otros objetos.

No es posible cancelar los eventos GotFocus y LostFocus.


Eventos GotFocus y LostFocus - Ejemplo de procedimientos de evento
Eventos GotFocus y LostFocus — Ejemplo de procedimientos de evento

En el ejemplo siguiente se muestra un mensaje en una etiqueta cuando el enfoque llega a un botón de opción.

Para probar el ejemplo, agregue los siguientes procedimientos de evento a un formulario llamado Contactos que contenga un botón de opción llamado OpciónSí y una etiqueta llamada EtiquetaSí.

Private Sub OpciónSí_GotFocus()

Me!EtiquetaSí.Caption = "El botón de opción 'Sí' tiene el enfoque."

End Sub

Private Sub OpciónSí_LostFocus()

Me!EtiquetaSí.Caption = ""	' Borra el título.

End Sub


Eventos GotFocus y LostFocus - Macros
Eventos GotFocus y LostFocus — Macros

Para ejecutar una macro cuando se produzca el evento GotFocus o LostFocus, establezca el nombre de la macro en la propiedad AlRecibirEnfoque (OnGotFocus) o AlPerderEnfoque (OnLostFocus).

Comentarios

Puede usar una macro de LostFocus para validar los datos introducidos cuando el usuario retire el enfoque a un control. También puede deshacer o modificar las condiciones establecidas en la macro de GotFocus del objeto.

Otros usos de las macros de LostFocus y GotFocus son habilitar, deshabilitar, mostrar y ocultar otros objetos.

No es posible usar la acción CancelarEvento en una macro de GotFocus o LostFocus.


Eventos KeyDown y KeyUp

•	El evento KeyDown se produce cuando el usuario presiona una tecla mientras un formulario o control tiene el enfoque. Este evento se produce también cuando se envía una pulsación de tecla a un formulario o control con la acción EnviarTeclas en una macro o con la instrucción SendKeys en Visual Basic.

•	El evento KeyUp se produce cuando el usuario suelta una tecla mientras un formulario o control tiene el enfoque. Este evento también se produce al enviar una pulsación de tecla a un formulario o control con la acción EnviarTeclas en una macro o con la instrucción SendKeys en Visual Basic.

Nota   Los eventos KeyDown y KeyUp se aplican sólo a los formularios y controles de formularios, y no a los controles de informes.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AlBajarTecla (OnKeyDown) o AlSubirTecla (OnKeyUp) al nombre de la macro o a [Procedimiento de evento].

En ambos eventos, el objeto que tenga el enfoque recibe todas las pulsaciones de teclas. Un formulario sólo puede tener el enfoque cuando no tenga controles, o cuando todos sus controles visibles estén deshabilitados.

Un formulario recibirá también todos los eventos de teclado, incluso los que se produzcan para sus controles, si se establece Sí en su propiedad TeclaDePresentaciónPreliminar (KeyPreview). De esta forma, todos los eventos de teclado se producirán primero para el formulario, y luego para el control que tenga el enfoque. Así puede responder a teclas específicas presionadas en el formulario, independientemente del control que tenga el enfoque. Por ejemplo, puede ser conveniente que la combinación de teclas CTRL+X produzca siempre la misma acción en un formulario.

Si mantiene presionada una tecla, los eventos KeyDown y KeyPress se alternarán repetidamente (KeyDown, KeyPress, KeyDown, KeyPress, etcétera) hasta que suelte la tecla, momento en que se producirá el evento KeyUp.

Aunque los eventos KeyDown y KeyUp se producen al presionar la mayoría de las teclas, normalmente se utilizan para reconocer o distinguir entre las teclas siguientes:

•	Teclas de caracteres extendidos, como por ejemplo las teclas de función.

•	Teclas de desplazamiento como INICIO, FIN, RE PÁG, AV PÁG, FLECHA ARRIBA, FLECHA ABAJO, FLECHA DERECHA, FLECHA IZQUIERDA y TAB.

•	Combinaciones de teclas y modificadores estándar del teclado (teclas MAYÚSCULAS, CTRL o ALT).

•	Teclado numérico y teclas de número ordinarias.

Los eventos KeyDown y KeyUp no se producen cuando se presiona:

•	La tecla ENTRAR si el formulario tiene un botón de comando cuya propiedad Predeterminado (Default) tiene el valor Sí.

•	La tecla ESC si el formulario tiene un botón de comando cuya propiedad Cancelar (Cancel) tiene el valor Sí.

Sugerencia   Para averiguar el carácter ANSI que corresponde a la tecla presionada, use el evento KeyPress.

Los eventos KeyDown y KeyPress se producen al presionar o enviar una tecla ANSI. El evento KeyUp se produce después de cualquier otro evento para  el control producido por la pulsación o el envío de la tecla. Si una pulsación hace que el enfoque pase de un control a otro, el evento KeyDown se produce para el primero, mientras que los eventos KeyPress y KeyUp se producen para el segundo.

Si desea más información, consulte el Orden de los eventos de pulsaciones de teclas y clics del mouse.

Si se muestra un cuadro de diálogo modal como resultado de presionar o enviar una tecla, se producirán los eventos KeyDown y KeyPress, pero no el evento KeyUp.


Eventos KeyDown y KeyUp - Macros
Eventos KeyDown y KeyUp — Macros

Para ejecutar una macro cuando se produzca el evento KeyDown o KeyUp, establezca en la propiedad AlBajarTecla (OnKeyDown) o AlSubirTecla (OnKeyUp) el nombre de la macro.

Comentarios

Puede usar una macro de KeyDown o KeyUp para responder siempre que el usuario presione o suelte una tecla mientras un formulario o control tenga el enfoque. Sin embargo, las macros no pueden devolver el código de tecla ni determinar qué tecla se ha presionado, por lo que normalmente con estos eventos se usan procedimientos de evento.

No es posible usar la acción CancelarEvento en una macro de KeyDown o KeyUp.


Eventos KeyDown y KeyUp - Procedimientos de evento
Eventos KeyDown y KeyUp — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento KeyDown o KeyUp, establezca la propiedad AlBajarTecla (OnKeyDown) o AlSubirTecla (OnKeyUp) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Private Sub nombrecontrol_KeyDown(KeyCode As Integer, Shift As Integer)

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)

Private Sub nombrecontrol_KeyUp(KeyCode As Integer, Shift As Integer)

Los procedimientos de evento KeyDown y KeyUp tienen los argumentos siguientes:

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento KeyUp o KeyDown se desea ejecutar.
KeyCode	Código de tecla, tal como vbKeyF1 (tecla F1) o vbKeyHome (tecla INICIO). Si desea consultar los códigos de teclas específicas, use las constantes intrínsecas mostradas en el Examinador de objetos. Puede impedir que un objeto reciba una pulsación de tecla estableciendo 0 como argumento KeyCode.
Shift	Estado de las teclas MAYÚSCULAS, CTRL y ALT cuando se produce el evento. Si precisa conocer el argumento Shift, puede usar una de las constantes intrínsecas siguientes como máscaras de bits:
	Constante	Descripción
	acShiftMask	Máscara de bits de la tecla MAYÚSCULAS.
	acCtrlMask	Máscara de bits de la tecla CTRL.
	acAltMask	Máscara de bits de la tecla ALT.
Comentarios

Para comprobar una condición, primero asigne cada resultado a una variable entera temporal, y luego compare el argumento Shift con una constante intrínseca. Use el operador And con el argumento Shift para comprobar si la condición es mayor que 0, lo que indicará que se presionaron las teclas MAYÚSCULAS, CTRL o ALT, como en el ejemplo siguiente:

MayúsculasPresionada = (Shift And acShiftMask) > 0

En un procedimiento de evento puede comprobar casi cualquier combinación de condiciones, como en el ejemplo siguiente:

If MayúsculasPresionada And CtrlPresionada Then

.	' Hacer esto si las teclas MAYÚSCULAS y CTRL están presionadas.

.

.

End If

Puede usar procedimientos de evento KeyDown y KeyUp para interpretar la versión en mayúsculas y minúsculas de cada carácter, comprobando a la vez los argumentos KeyCode y Shift. El argumento KeyCode indica la tecla presionada físicamente (por lo que A y a se consideran la misma tecla), y el argumento Shift indica el estado de MAYÚSCULAS+tecla, por lo que devuelve A o a.

Puede usar procedimientos de evento KeyDown y KeyUp como controladores de teclado si necesita responder cuando se presiona y también cuando se suelta una tecla.

Es posible responder a teclas específicas en un formulario, independientemente del control que tenga el enfoque. Por ejemplo, puede ser conveniente que la combinación CTRL+X dé lugar siempre a la misma acción en un formulario. Para asegurarse de que un formulario reciba todos los eventos de teclado, incluso los que se produzcan para sus controles, antes de que se produzcan para los controles, establezca Sí en la propiedad TeclaDePresentaciónPreliminar (KeyPreview) del formulario. De esta forma, todos los eventos de teclado ocurrirán primero para el formulario, y luego para el control que tenga el enfoque. Puede responder a pulsaciones de teclas específicas en los eventos KeyDown, KeyPress y KeyUp del formulario. Para impedir que un control reciba las pulsaciones a las que ya se ha respondido y evitar que se produzcan los eventos de teclado para el control, establezca 0 como argumento KeyCode en los eventos KeyDown y KeyUp, y también 0 en el argumento KeyAscii del evento KeyPress (siempre que la tecla sea ANSI). Es necesario establecer 0 en los tres argumentos si no se desea que el control reciba las pulsaciones de teclas.

Puede usar los argumentos de los eventos KeyDown, KeyPress y KeyUp junto con los de los eventos MouseDown, MouseUp y MouseMove para que la aplicación se comporte de forma coherente tanto para los usuarios del teclado como para los del mouse.

No es posible cancelar el evento KeyDown o KeyUp.


Eventos KeyDown y KeyUp - Ejemplo de procedimientos de evento
Eventos KeyDown y KeyUp — Ejemplo de procedimientos de evento

En el ejemplo siguiente se determina si se ha presionado la tecla MAYÚSCULAS, CTRL o ALT.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga un cuadro de texto llamado ControladorTeclado.

Private Sub ControladorTeclado_KeyDown(KeyCode As Integer, Shift As Integer)

Dim intShiftDown As Integer, intAltDown As Integer

Dim intCtrlDown As Integer

' Usa máscaras de bits para determinar la tecla presionada.

intShiftDown = (Shift And acShiftMask) > 0

intAltDown = (Shift And acAltMask) > 0

intCtrlDown = (Shift And acCtrlMask) > 0

' Muestra un mensaje indicando al usuario la tecla presionada.

If intShiftDown Then MsgBox "Ha presionado la tecla MAYÚSCULAS."

If intAltDown Then MsgBox "Ha presionado la tecla ALT."

If intCtrlDown Then MsgBox "Ha presionado la tecla CTRL."

End Sub


Evento KeyPress

El evento KeyPress se produce cuando el usuario presiona y suelta una tecla o una combinación de teclas que corresponda a un código ANSI mientras un formulario o control tiene el enfoque. Este evento también se produce al enviar una pulsación de tecla ANSI a un formulario o control con la acción EnviarTeclas en una macro o la instrucción SendKeys en Visual Basic.

Nota   El evento KeyPress se aplica sólo a formularios y controles de formularios, y no a los controles de informes.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlPresionarTecla (OnKeyPress) al nombre de la macro o a [Procedimiento de evento].

El objeto que tenga el enfoque recibe todas las pulsaciones de teclas. Un formulario sólo puede tener el enfoque si no contiene controles, o si todos sus controles visibles están deshabilitados.

Un formulario recibirá todos los eventos de teclado, incluidos los que se produzcan para sus controles, si se establece Sí en su propiedad TeclaDePresentaciónPreliminar (KeyPreview). De esta forma, todos los eventos de teclado se producirán primero para el formulario y después para el control que tenga el enfoque. Por ejemplo, puede ser conveniente que la combinación de teclas CTRL+X realice siempre la misma acción en un formulario.

Si mantiene presionada una tecla ANSI, se alternarán repetidamente los eventos KeyDown y KeyPress (KeyDown, KeyPress, KeyDown, KeyPress, etcétera) hasta que suelte la tecla, momento en que se producirá el evento KeyUp.

Un evento KeyPress puede deberse a cualquier carácter imprimible del teclado, a la tecla CTRL combinada con un carácter del alfabeto estándar o carácter especial y a la tecla ENTRAR o RETROCESO. Puede usar los procedimientos de evento KeyDown y KeyUp para ocuparse de cualquier pulsación de tecla que el evento KeyPress no reconozca, como por ejemplo las teclas de función, las de desplazamiento y las combinaciones de ellas con modificadores de teclado (teclas ALT, MAYÚSCULAS o CTRL). A diferencia de los eventos KeyDown y KeyUp, el evento KeyPress no indica el estado físico del teclado, sino el carácter ANSI que corresponde a la tecla o combinación de teclas presionada.

KeyPress interpreta las formas mayúscula y minúscula de cada carácter con códigos de teclas diferentes, y por ello las considera dos caracteres distintos.

Nota   La tecla RETROCESO forma parte del juego de caracteres ANSI, pero no así la tecla SUPR. Si elimina un carácter de un control con la tecla RETROCESO, provocará un evento KeyPress, pero no lo hará si usa la tecla SUPR.

Los eventos KeyDown y KeyPress se producen al presionar o enviar una tecla ANSI. El evento KeyUp se produce después de cualquier otro para el control producido al presionar o enviar la tecla. Si una pulsación de tecla hace que el enfoque se traslade de un control a otro, el evento KeyDown se producirá para el primer control, mientras que los eventos KeyPress y KeyUp se producirán para el segundo.

Por ejemplo, si se desplaza a un nuevo registro y escribe un carácter en su primer control, se producirán los siguientes eventos:

Current (para el nuevo registro)

 ⇓

Enter (para el primer control del nuevo registro)

 ⇓

GotFocus (para el control)

 ⇓

KeyDown (para el control)

 ⇓

KeyPress (para el control)

 ⇓

BeforeInsert (para el nuevo registro del formulario)

 ⇓

Change (para el control si es un cuadro de texto o combinado)

 ⇓

KeyUp (para el control)

Si desea más información, consulte el Orden de los eventos de pulsaciones de teclas y clics del mouse.


Evento KeyPress - Macros
Evento KeyPress — Macros

Para ejecutar una macro cuando se produzca el evento KeyPress, establezca en la propiedad AlPresionarTecla (OnKeyPress) el nombre de la macro.

Comentarios

Puede usar una macro de KeyPress para responder siempre que el usuario presione una tecla ANSI estando el enfoque en un formulario o en un control. Sin embargo, las macros no pueden devolver el código de tecla ANSI ni determinar qué tecla se ha presionado, por lo que normalmente con este evento se utilizan procedimientos de evento.

Puede usar la acción CancelarEvento en una macro de KeyPress para cancelar la tecla o combinación de teclas. Por ejemplo, puede ser conveniente impedir la entrada de pulsaciones de teclas ANSI en un control en determinadas circunstancias.


Evento KeyPress - Procedimientos de evento
Evento KeyPress — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento KeyPress, establezca la propiedad AlPresionarTecla (OnKeyPress) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_KeyPress(KeyAscii As Integer)

Private Sub nombrecontrol_KeyPress(KeyAscii As Integer)

El evento KeyPress tiene los siguientes argumentos:

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento KeyPress se desea ejecutar.
KeyAscii	Devuelve un código de tecla ANSI numérico. El argumento KeyAscii se pasa por referencia, al modificarlo se envía un carácter distinto al objeto. Si se establece 0 en el argumento KeyAscii, se cancela la pulsación de tecla, con lo que el objeto no reconocerá que se ha presionado una tecla.
Comentarios

Un procedimiento de evento KeyPress es útil para interceptar pulsaciones de teclas introducidas en un cuadro de texto o cuadro combinado, y permite comprobar su validez o dar formato a los caracteres mientras se van escribiendo. Cambiando el valor del argumento KeyAscii se cambia el carácter mostrado.

Puede convertir el argumento KeyAscii en un carácter mediante la siguiente expresión:

Chr(KeyAscii)

Así puede realizar operaciones con cadenas y convertir de nuevo el carácter en un número ANSI que el control pueda reconocer, usando esta sintaxis:

KeyAscii = Asc(carácter)

Nota   El número ANSI para la combinación de teclado CTRL+@ es 0. Debido a que Microsoft Access reconoce el valor 0 en KeyAscii como una cadena de longitud cero (" "), es recomendable evitar el uso de CTRL+@ en las aplicaciones.

Puede responder a teclas específicas que se presionen cuando un formulario esté abierto, independientemente de cuál de sus controles tenga el enfoque. Por ejemplo, puede ser conveniente que la combinación de teclas CTRL+X realice siempre la misma acción en un formulario. Para asegurarse de que el formulario reciba todos los eventos de teclado, incluso los que se producen para sus controles, antes de que se produzcan para los controles, establezca Sí en la propiedad TeclaDePresentaciónPreliminar (KeyPreview) del formulario. De esta forma, todos los eventos de teclado se producirán primero para el formulario y luego para el control que tenga el enfoque. Puede responder a pulsaciones de teclas específicas en los eventos KeyDown, KeyPress y KeyUp del formulario. Para impedir que un control reciba las pulsaciones a las que ya se ha respondido y evitar que se produzcan los eventos de teclado para el control, establezca 0 como argumento KeyCode en los eventos KeyDown y KeyUp, y también 0 en el argumento KeyAscii del evento KeyPress. Es necesario establecer 0 en los tres argumentos si no se desea que el control reciba las pulsaciones de teclas.

Puede usar los argumentos de los eventos KeyDown, KeyPress y KeyUp junto con los de los eventos MouseDown, MouseUp y MouseMove para que la aplicación se comporte de forma coherente tanto para los usuarios de teclado como para los del mouse.

No es posible cancelar el evento KeyPress en un procedimiento de evento, pero sí en una macro.


Evento KeyPress - Ejemplo de procedimientos de evento
Evento KeyPress — Ejemplo de procedimientos de evento

En el ejemplo siguiente se pasa a mayúsculas el texto introducido en un cuadro de texto según se va escribiendo, carácter a carácter.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga un cuadro de texto llamado RegiónEnvío.

Private Sub RegiónEnvío_KeyPress(KeyAscii As Integer)

Dim strCharacter As String

' Convierte el valor ANSI en una cadena.

strCharacter = Chr(KeyAscii)

' Pasa el carácter a mayúsculas, y luego a valor ANSI.

KeyAscii = Asc(UCase(strCharacter))

End Sub


Eventos Load y Unload

•	El evento Load se produce cuando se abre un formulario y se muestran sus registros.

•	El evento Unload se produce después de cerrar un formulario, pero antes de que desaparezca de la pantalla. Cuando se vuelve a cargar el formulario, Microsoft Access lo vuelve a mostrar e inicializa el contenido de todos sus controles.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AlCargar (OnLoad) o AlDescargar (OnUnload) al nombre de la macro o a [Procedimiento de evento].

El evento Load lo provocan acciones del usuario tales como las siguientes:

•	Iniciar una aplicación.

•	Abrir un formulario haciendo clic en Abrir en la ventana Base de datos.

•	Ejecutar la acción AbrirFormulario en una macro.

El evento Unload lo provocan acciones del usuario tales como:

•	Hacer clic en el botón Cerrar de una ventana Formulario o en el comando Cerrar del menú Archivo o del menú de Control de un formulario

•	Ejecutar la acción Cerrar en una macro.

•	Salir de una aplicación haciendo clic con el botón secundario en el botón de la aplicación de la barra de tareas y eligiendo Cerrar.

•	Salir de Windows con una aplicación en ejecución.

Ejecutando una macro o procedimiento de evento cuando se produce el evento Load de un formulario, se puede especificar la configuración predeterminada de los controles, o mostrar datos calculados que dependan de los datos de los registros del formulario.

Ejecutando una macro o procedimiento de evento cuando se produce el evento Unload de un formulario, se puede comprobar que el formulario debe transferirse, o especificar acciones que deban tener lugar al transferir el formulario. También puede abrir otro formulario o mostrar un cuadro de diálogo solicitando el nombre del usuario para crear una entrada en un registro de quienes utilizan un formulario.

La primera vez que se abre un formulario, se producen los eventos siguientes, en el orden indicado:

Open ⇒ Load ⇒ Resize ⇒ Activate ⇒ Current

Si duda entre usar el evento Open o el evento Load para una macro o procedimiento de evento, una diferencia significativa entre ellos es que el primero puede cancelarse, y el segundo no. Por ejemplo, si va a generar dinámicamente un origen de registros para un formulario en un procedimiento de evento Open, puede cancelar la apertura del formulario si resulta que no hay registros que mostrar.

Al cerrar un formulario, se producen los eventos siguientes, en el orden indicado:

Unload ⇒ Deactivate ⇒ Close

El evento Unload se produce antes que el evento Close. El evento Unload puede cancelarse, pero no así el evento Close.

Nota   Al crear macros o procedimientos de evento para eventos relacionados con Load, como Activate y GotFocus, asegúrese de que no están en conflicto (por ejemplo, que no ocurra en una macro algo que se cancele en otra), y de que no provocan eventos en cascada.


Eventos Load y Unload - Macros
Eventos Load y Unload — Macros

Para ejecutar una macro cuando se produzca el evento Load o Unload, establezca en la propiedad AlCargar (OnLoad) o AlDescargar (OnUnload) el nombre de la macro.

Comentarios

Puede usar una macro de Load para ejecutar acciones con los controles o registros de un formulario después de abierto éste. Por ejemplo, puede especificar la configuración predeterminada de los controles.

No es posible usar la acción CancelarEvento en una macro de Load.

Puede usar la acción CancelarEvento en una macro de Unload para cancelar la transferencia de los registros. Con ello también cancelará el cierre del formulario.

Si en una macro de Unload se ejecuta la acción CancelarEvento, no será posible cerrar el formulario. Para cerrarlo será necesario corregir la condición que haya provocado la acción CancelarEvento o abrir la macro y eliminar la acción CancelarEvento. Si el formulario es modal, no podrá abrir la macro ni trabajar en ninguna otra ventana de la aplicación.


Eventos Load y Unload - Procedimientos de evento
Eventos Load y Unload — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Load o Unload, establezca la propiedad AlCargar (OnLoad) o AlDescargar (OnUnload) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Load( )

Private Sub Form_Unload(Cancel As Integer)

El evento Unload tiene el siguiente argumento:

Argumento	Descripción
Cancel	Su valor determina si se transfiere el formulario. Estableciendo True (–1) en Cancel se impide la transferencia del formulario.
Comentarios

En el procedimiento de evento Load de un formulario puede incluir código de inicialización. Por ejemplo, puede especificar la configuración predeterminada de los controles e inicializar las variables a nivel de formulario.

No es posible cancelar el evento Load.

En un procedimiento de evento Unload, puede incluir el código de validación a nivel de formulario que sea necesario para cerrar el formulario o guardar en un archivo los datos que contiene.

Si se establece True en Cancel para un formulario modal, es posible que no pueda devolver el control al resto de la aplicación.


Eventos Load y Unload - Ejemplo de procedimientos de evento
Eventos Load y Unload — Ejemplo de procedimientos de evento

En el ejemplo siguiente se muestra la fecha actual en el título de un formulario en el momento de cargarlo.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario:

Private Sub Form_Load()

Me.Caption = Date

End Sub

En el ejemplo siguiente se pide al usuario que compruebe que el formulario debe cerrarse.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario. En la vista Formulario, cierre el formulario para que aparezca el cuadro de diálogo, y luego haga clic en Sí o en No.

Private Sub Form_Unload(Cancel As Integer)

If MsgBox("¿Cerrar el formulario?", vbYesNo) = vbYes Then

Exit Sub

Else

Cancel = True

End If

End Sub


Eventos MouseDown y MouseUp

•	El evento MouseDown se produce cuando el usuario presiona un botón del mouse.

•	El evento MouseUp se produce cuando el usuario suelta un botón del mouse.

Notas

•	Los eventos MouseDown y MouseUp sólo se aplican a los formularios, a las secciones de formulario y a los controles de formulario, y no a los controles de los informes.

•	Estos eventos no se aplican a las etiquetas asociadas a otro control, como por ejemplo a un cuadro de texto, sino sólo a las etiquetas "independientes". Presionar y soltar un botón del mouse sobre una etiqueta adjunta tiene el mismo efecto que hacerlo sobre el control asociado. Se producirán los eventos normales para el control, y ninguno para la etiqueta.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AlSubirMouse (OnMouseUp) o AlBajarMouse (OnMouseDown) al nombre de la macro o a [Procedimiento de evento].

Puede usar un evento MouseDown o MouseUp para especificar lo que debe ocurrir cuando se presione o suelte un botón determinado del mouse. A diferencia de los eventos Click y DblClick, MouseDown y MouseUp permiten distinguir entre los botones primario, secundario e intermedio del mouse. También es posible escribir código para combinaciones mouse-teclado que incluyan las teclas MAYÚSCULAS, CTRL y ALT.

Para que se produzca un evento MouseDown o MouseUp en un formulario, presione el botón del mouse en una zona en blanco o en el selector de registro en el formulario. Para provocar un evento MouseDown o MouseUp en una sección de formulario, presione el botón del mouse en una zona en blanco de la sección.

Las siguientes normas se aplican a ambos eventos, MouseDown y MouseUp:

•	Si se presiona un botón del mouse mientras el puntero se encuentra sobre un formulario o control, ese objeto recibe todos los eventos de mouse hasta el último evento MouseUp, inclusive.

•	Si los botones del mouse se presionan en sucesión, el objeto que recibe el evento de mouse después de que se presione el primer botón recibirá todos los eventos de mouse hasta que se suelten todos los botones.

Para responder a un evento provocado al mover el mouse, utilice el evento MouseMove.


Eventos MouseDown y MouseUp - Macros
Eventos MouseDown y MouseUp — Macros

Para ejecutar una macro cuando se produzca el evento MouseDown o MouseUp, establezca en la propiedad AlSubirMouse (OnMouseUp) o AlBajarMouse (OnMouseDown) el nombre de la macro.

Comentarios

Puede usar una macro de MouseDown o MouseUp para responder siempre que el usuario presione o suelte un botón del mouse en un formulario o control. Sin embargo, las macros no pueden devolver el código de botón ni determinar qué botón se ha presionado, por lo que normalmente con este evento se utilizan procedimientos de evento.

No es posible usar la acción CancelarEvento en una macro de MouseDown o MouseUp, con una excepción: Puede usar CancelarEvento en una macro de MouseDown para cancelar el evento que se produce al hacer clic con el botón secundario del mouse. Por ejemplo, puede cancelar la presentación de un menú contextual y mostrar en su lugar su propio menú personalizado.


Eventos MouseDown y MouseUp - Procedimientos de evento
Eventos MouseDown y MouseUp — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento MouseDown o MouseUp, establezca la propiedad AlSubirMouse (OnMouseUp) o AlBajarMouse (OnMouseDown) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Private Sub nombrecontrol_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Private Sub nombrecontrol_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Los eventos MouseDown y MouseUp tienen los argumentos siguientes:

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento MouseDown o MouseUp se desea ejecutar.
Button	Botón presionado (MouseDown) o soltado (MouseUp) para activar el evento. Si necesita comprobar el argumento Button puede usar una de las siguientes constantes intrínsecas como máscara de bits:
	Constante	Descripción
	acLeftButton	Máscara de bits del botón primario del mouse.
	acRightButton	Máscara de bits del botón secundario del mouse.
	acMiddleButton	Máscara de bits del botón intermedio del mouse.
Shift	Estado de las teclas MAYÚSCULAS, CTRL y ALT al presionar o soltar el botón especificado en el argumento Button. Si necesita comprobar el argumento Shift, puede usar una de las siguientes constantes intrínsecas como máscara de bits:
	Constante	Descripción
	acShiftMask	Máscara de bits de la tecla MAYÚSCULAS.
	acCtrlMask	Máscara de bits de la tecla CTRL.
	acAltMask	Máscara de bits de la tecla ALT.
X, Y	Coordenadas x e y de la posición actual del puntero del mouse. Los argumentos X e Y se expresan siempre en twips.
Nota   Si se presiona un botón del mouse mientras el puntero se encuentra sobre un formulario o control, ese objeto recibirá todos los eventos de mouse que se produzcan hasta el último evento MouseUp, inclusive. Esto significa que los argumentos X e Y pueden no siempre referirse al objeto los recibe.

Comentarios

Para comprobar una condición, primero asigne cada resultado a una variable temporal de tipo Integer, y luego compare el argumento Shift o Button con una constante intrínseca. Use el operador And con el argumento Button para determinar si la condición es mayor que cero, lo que indicará que se ha presionado el botón primario, intermedio o secundario, como en el ejemplo siguiente:

PrimarioAbajo = (Button And acLeftButton) > 0

En un procedimiento de evento, puede comprobar cualquier combinación de condiciones, como en el ejemplo siguiente:

If PrimarioAbajo And CtrlAbajo Then

.' Hacer esto si están presionados el botón primario y la tecla CTRL.

.

.

End If

Nota   El argumento Button de los eventos MouseDown y MouseUp es distinto del argumento Button del evento MouseMove. En el primer caso, el argumento indica exactamente un botón por evento; es decir, si presiona dos botones del mouse, se producirán dos eventos MouseDown (y MouseUp), cada uno con un argumento Button diferente. En el evento MouseMove, el argumento Button indica el estado actual de todos los botones.

Puede usar los argumentos de los eventos KeyDown, KeyPress y KeyUp junto con los de los eventos MouseDown, MouseUp y MouseMove para hacer la aplicación coherente tanto para los usuarios de teclado como para los de mouse.

No es posible cancelar los eventos MouseDown o MouseUp.


Constantes intrínsecas como máscaras de bits

Para comprobar los argumentos Button o Shift puede usar una máscara de bits.

El argumento Button es un campo de bits que corresponden al botón primario del mouse (bit 0), al botón secundario (bit 1) y al botón intermedio (bit 2). Estos bits corresponden a los valores 1, 2 y 4, respectivamente. Sólo uno de los bits está a 1, indicando qué botón ha provocado el evento.

Las constantes intrínsecas con que cuenta Microsoft Access para el argumento Button tienen los valores siguientes:

Constante	Valor
acLeftButton	1
acRightButton	2
acMiddleButton	4
El argumento Shift es un campo de bits. En él, los bits menos significativos corresponden a las teclas MAYÚSCULAS (bit 0), CTRL (bit 1) y ALT (bit 2 ). A estos bits corresponden los valores 1, 2 y 4, respectivamente. El argumento Shift indica el estado de estas teclas. Algunos, todos o ninguno de los bits pueden estar a 1, indicando que algunas, todas o ninguna de las teclas están presionadas. Por ejemplo, si están presionadas CTRL y ALT, el valor del argumento Shift será 6.

Las constantes intrínsecas con que cuenta Microsoft Access para el argumento Shift tienen los valores siguientes:

Constante	Valor
acShiftMask	1
acCtrlMask	2
acAltMask	4
Puede usar estas constantes para determinar cualquier combinación de botones y teclas sin tener que ocuparse del valor único de cada combinación. Cada bit está a 1 si el botón o tecla correspondiente está presionado.


Eventos MouseDown y MouseUp - Ejemplo de procedimientos de evento
Eventos MouseDown y MouseUp — Ejemplo de procedimientos de evento

En el ejemplo siguiente se indica la forma de determinar qué botón del mouse ha provocado un evento MouseDown.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _

X As Single, Y As Single)

If Button = acLeftButton Then

MsgBox "Ha presionado el botón primario."

End If

If Button = acRightButton Then

MsgBox "Ha presionado el botón secundario."

End If

If Button = acMiddleButton Then

MsgBox "Ha presionado el botón intermedio."

End If

End Sub


Evento MouseMove

El evento MouseMove se produce cuando el usuario mueve el mouse.

Notas

•	El evento MouseMove se aplica sólo a formularios, secciones de formulario y controles de formulario, y no a los controles de informes.

•	Este evento no se aplica a las etiquetas asociadas a otro control, como por ejemplo un las de un cuadro de texto. Sólo se aplica a las etiquetas "independientes". El mover el puntero del mouse sobre una etiqueta adjunta tiene el mismo efecto que hacerlo sobre el control asociado. Se producirán los eventos normales para el control, y ninguno para la etiqueta adjunta.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlMoverMouse (OnMouseMove) al nombre de la macro o a [Procedimiento de evento].

El evento MouseMove se genera continuamente mientras el puntero del mouse se mueve sobre los objetos. Salvo en el caso de que otro objeto genere un evento de mouse, los objetos reconocen los eventos MouseMove cuando el puntero del mouse se encuentra dentro de su contorno.

Para provocar un evento MouseMove en un formulario, mueva el puntero del mouse sobre una zona en blanco del mismo, sobre el selector de registro o sobre la barra de desplazamiento. Para provocar un evento MouseMove en una sección de un formulario, mueva el puntero del mouse sobre una zona en blanco de esa sección.

Notas

•	El movimiento de un formulario puede activar un evento MouseMove incluso cuando el mouse esté estacionario. Los eventos MouseMove se generan cuando el formulario se mueve bajo el puntero. Si una macro o procedimiento de evento mueve un formulario como respuesta a un evento MouseMove, el evento puede producirse en cascada (es decir, generar eventos MouseMove continuamente).

•	Si dos controles están muy cerca y se mueve rápidamente el puntero del mouse sobre el espacio que los separa, es posible que el evento MouseMove no se produzca para ese espacio (por ejemplo, podría tratarse de un evento MouseMove para esa sección del formulario). En estos casos, puede ser necesario responder al evento MouseMove en el control contiguo, además de en la sección de formulario.

Para ejecutar una macro o procedimiento de evento como respuesta a presionar y soltar los botones del mouse, utilice los eventos MouseDown y MouseUp.


Evento MouseMove - Macros
Evento MouseMove — Macros

Para ejecutar una macro cuando se produzca el evento MouseMove, establezca la propiedad AlMoverMouse (OnMouseMove) al nombre de la macro.

Comentarios

Puede usar una macro de MouseMove para responder siempre que el usuario mueva el mouse sobre un formulario o control. Sin embargo, las macros no pueden devolver códigos de botón ni determinar el estado de los botones del mouse ni las coordenadas del puntero cuando se produce el movimiento, por lo que normalmente con este evento se utilizan procedimientos de evento.

No es posible usar la acción CancelarEvento en una macro de MouseMove.


Evento MouseMove - Procedimientos de evento
Evento MouseMove — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento MouseMove, establezca la propiedad AlMoverMouse (OnMouseMove) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Private Sub nombrecontrol_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

El evento MouseMove tiene los siguientes argumentos:

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento MouseMove se desea ejecutar.
Button	Estado de los botones del mouse cuando se produce el evento. Si necesita comprobar el argumento Button, puede usar una de las constantes intrínsecas como máscara de bits:
	Constante	Descripción
	acLeftButton	Máscara de bits para el botón primario del mouse.
	acRightButton	Máscara de bits para el botón secundario del mouse.
	acMiddleButton	Máscara de bits para el botón intermedio del mouse.
Shift	Estado de las teclas MAYÚSCULAS, CTRL y ALT al presionar o soltar el botón especificado en el argumento Button. Si necesita comprobar el argumento Shift, puede usar una de las siguientes constantes intrínsecas como máscara de bits:
	Constante	Descripción
	acShiftMask	Máscara de bits de la tecla MAYÚSCULAS.
	acCtrlMask	Máscara de bits de la tecla CTRL.
	acAltMask	Máscara de bits de la tecla ALT.
X, Y	Coordenadas x e y de la posición actual del puntero del mouse. Los argumentos X e Y siempre se expresan en twips.
Comentarios

Para comprobar una condición, primero asigne cada resultado a una variable temporal de tipo Integer y luego compare el argumento Shift o Button con una constante intrínseca. Use el operador And con el argumento Button para determinar si la condición es mayor que cero, lo que indicará que se ha presionado el botón primario, intermedio o secundario, como en el ejemplo siguiente:

IzquiedoAbajo = (Button And acLeftButton) > 0

En un procedimiento, puede comprobar cualquier combinación de condiciones, como en el ejemplo siguiente:

If PrimarioAbajo And CtrlDown Then

.' Hacer esto si están presionados el botón primario y la tecla CTRL.

.

.

End If

Nota El argumento Button de los eventos MouseDown y MouseUp es distinto del argumento Button del evento MouseMove. En el evento MouseMove, el argumento Button indica el estado actual de todos los botones. Un solo evento MouseMove puede indicar que algunos, todos o ninguno de los botones está presionado. Por ejemplo, si presiona los botones primario y secundario mientras mueve el mouse, el argumento Button tendrá en valor 3 (1 + 2). En los eventos MouseDown y MouseUp, el argumento Button indica un botón por evento.

Puede usar los argumentos de los eventos KeyDown, KeyPress y KeyUp junto con los de los eventos MouseDown, MouseUp y MouseMove para hacer la aplicación coherente tanto para los usuarios de teclado como para los de mouse. Por ejemplo, puede ser necesario coordinar el enfoque del teclado con el del mouse. Normalmente, estos dos enfoques serán el mismo. Por ejemplo, si sitúa el puntero del mouse en un cuadro de texto y hace clic en él, tanto el enfoque de teclado como el de mouse pasarán al cuadro de texto. Sin embargo, el hecho de situar el puntero del mouse sobre un control no hace que el enfoque de teclado se sitúe en él. Para ello es necesario hacer clic con el mouse, usar una de las teclas de desplazamiento del teclado o establecer el enfoque en el control con el procedimiento de evento MouseMove.

Como el evento MouseMove se produce en cada zona del formulario sobre la que se mueve el puntero, puede provocar una gran cantidad de eventos MouseMove si no los controla. Puede ser conveniente asegurarse de que cuando un control o sección haya recibido el evento MouseMove, éste no se produzca de nuevo en él mientras el puntero no haya abandonado esa zona del formulario. Para ello puede establecer una variable en el módulo que indique si el evento MouseMove ya se ha producido en el control o sección de formulario.

No es posible cancelar el evento MouseMove.


Evento MouseMove - Ejemplo de procedimientos de evento
Evento MouseMove — Ejemplo de procedimientos de evento

En el ejemplo siguiente se determina dónde se encuentra el puntero del mouse y si está presionado el botón primario del mouse y la tecla MAYÚSCULAS. Las coordenadas x e y de la posición se muestran en un control etiqueta al ir moviendo el puntero.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga una etiqueta llamada Coordenadas:

Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, _

X As Single, Y As Single)

Dim intShiftDown As Integer, intLeftButton As Integer

Me!Coordenadas.Caption = X & ", " & Y

' Usa máscaras de bits para determinar el estado de la tecla MAYÚSCULAS y el botón primario.

intShiftDown = Shift And acShiftMask

intLeftButton = Button And acLeftButton

' Comprueba si MAYÚSCULAS y el botón primario están presionados a la vez.

If intShiftDown And intLeftButton > 0 Then

MsgBox "Ha presionado la tecla MAYÚSCULAS y el botón primario."

End If

End Sub


Evento Resize

El evento Resize se produce al abrir un formulario, y siempre que cambia su tamaño.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlCambiarTamaño (OnResize) al nombre de la macro o a [Procedimiento de evento].

Este evento se produce al cambiar el tamaño del formulario en una macro o procedimiento de evento, como ocurre, por ejemplo, al usar la acción DesplazarTamaño en una macro para cambiar el tamaño del formulario.

Ejecutando una macro o procedimiento de evento cuando se produce un evento Resize, se puede mover o cambiar el tamaño de un control cuando cambie el tamaño del formulario al que pertenece. También puede usar el evento Resize para volver a calcular variables o restablecer propiedades que puedan depender del tamaño del formulario.

La primera vez que se abre un formulario, se producen los eventos siguientes, en el orden indicado:

Open ⇒ Load ⇒ Resize ⇒ Activate ⇒ Current

Nota   Tenga cuidado al usar la acción DesplazarTamaño, Maximizar, Minimizar o Restaurar (o los métodos correspondientes del objeto DoCmd: MoveSize, Maximize, Minimize y Restore) en una macro o procedimiento de evento Resize. Estas acciones pueden provocar un evento Resize para el formulario, causando así una sucesión de eventos en cascada.


Evento Resize - Macros
Evento Resize — Macros

Para ejecutar una macro cuando se produzca el evento Resize, establezca la propiedad AlCambiarTamaño (OnResize) al nombre de la macro.

Comentarios

Para repintar la pantalla cada vez que se cambia el tamaño de un formulario, use la acción RepintarObjeto en la macro que especifique para el evento Resize.

No es posible usar la acción CancelarEvento en una macro de Resize.


Evento Resize - Procedimientos de evento
Evento Resize — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Resize, establezca la propiedad AlCambiarTamaño (OnResize) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Resize( )

Comentarios

Para repintar la pantalla cada vez que se cambie el tamaño de un formulario, use el método Repaint en un procedimiento de evento Resize.

No es posible cancelar el evento Resize.


Evento Resize - Ejemplo de procedimientos de evento
Evento Resize — Ejemplo de procedimientos de evento

En el ejemplo siguiente se muestra cómo puede usarse un procedimiento de evento Resize para volver a dibujar un formulario al maximizarlo. Cuando el usuario hace clic en un botón de comando con la etiqueta "Maximizar", el formulario se maximiza y se produce el evento Resize.

Para probar el ejemplo, agregue los siguientes procedimientos de evento a un formulario llamado Contactos que contenga a botón de comando llamado Maximizar:

Private Sub Maximizar_Click()

DoCmd.Maximize

End Sub

Private Sub Form_Resize()

Forms!Contactos.Repaint

End Sub


Evento Retreat

El evento Retreat se produce cuando Microsoft Access vuelve a una sección de informe anterior al dar formato a un informe.

Nota   El evento Retreat se aplica a todas las secciones de los informes, excepto los encabezados y pies de página.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlRetirarse (OnRetreat) al nombre de la macro o a [Procedimiento de evento].

En ciertas circunstancias, Microsoft Access tiene que volver a una sección anterior de un informe para determinar dónde se encuentran determinados controles y secciones, y si van a caber en un espacio determinado. Ejemplos de estas situaciones son los siguientes:

•	Grupos (excepto encabezados y pies de página) cuya propiedad MantenerJuntos (KeepTogether) esté establecida a Grupo entero o Con el primer detalle.

•	Subinformes o subformularios cuya propiedad Autoextensible (CanGrow) y/o Autocomprimible (CanShrink) esté establecida a Sí.

•	Secciones de la última página de un informe.

En estos casos, se produce el evento Format cuando Microsoft Access determina la forma en que se ajustarán las secciones a la página impresa (sin embargo, no se produce un evento Print, ya que las secciones aún no se van a imprimir). Si no es posible imprimir las secciones, Microsoft Access retrocede hasta el lugar necesario para que las secciones puedan imprimirse en la página siguiente. El evento Retreat se produce para cada sección ya procesada a la que regresa Microsoft Access. Al regresar, se produce de nuevo el evento Format para cada sección, mientras  Microsoft Access prepara de nuevo su impresión.

Por ejemplo, siempre que Microsoft Access llega al final de la última página al dar formato a un informe, se produce un evento Retreat por cada sección anterior hasta que Microsoft Access llega a la primera sección de la última página. En este momento, el evento Format se produce de nuevo para cada sección de la página, seguido de los eventos Print.

Puede ejecutar una macro o procedimiento de evento cuando se produzca el evento Retreat para deshacer los cambios efectuados cuando se produjo el evento Format para la sección. Esto es útil cuando el procedimiento de evento Format ejecuta acciones tales como calcular totales de página o controlar el tamaño de una sección, lo que conviene hacer una sola vez por sección.

El evento Retreat también es útil para mantener la posición de los elementos del informe. Por ejemplo, el informe Ventas anuales de la base de datos de ejemplo Neptuno utiliza este evento para determinar si el encabezado de página se imprime o no (el encabezado se imprime en las páginas que siguen a una página en la que se ha impreso el encabezado de grupo, y no se imprime en las páginas que siguen a una página donde se ha impreso el pie de grupo).


Evento Retreat - Macros
Evento Retreat — Macros

Para ejecutar una macro cuando se produzca el evento Retreat, establezca la propiedad AlRetirarse (OnRetreat) al nombre de la macro.

Comentarios

No es posible usar la acción CancelarEvento en una macro de Retreat.


Evento Retreat - Procedimientos de evento
Evento Retreat — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Retreat, establezca la propiedad AlRetirarse (OnRetreat) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub nombresección_Retreat( )

El procedimiento de evento Retreat tiene el siguiente argumento:

Argumento	Descripción
nombresección	Nombre de la sección del informe cuyo procedimiento de evento Retreat se desea ejecutar.
Comentarios

No es posible cancelar el evento Retreat.


Evento Timer

El evento Timer se produce a intervalos regulares en un formulario, según especifique su propiedad IntervaloDeCronómetro (TimerInterval).

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca el nombre de la macro o [Procedimiento de evento] en la propiedad AlCronómetro (OnTimer).

Ejecutando una macro o procedimiento de evento cuando se produce un evento Timer, se puede controlar lo que debe hacer Microsoft Access cada intervalo. Por ejemplo, puede ser conveniente volver a consultar los registros bases o repintar la pantalla cada cierto tiempo.

El valor de la propiedad IntervaloDeCronómetro (TimerInterval) del formulario especifica el intervalo, en milisegundos, entre los eventos Timer. El intervalo puede variar entre 0 y 65.535 milisegundos. El valor 0 en la propiedad IntervaloDeCronómetro (TimerInterval) impide que se produzca el evento Timer.


Evento Timer - Procedimientos de evento
Evento Timer — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca el evento Timer , establezca la propiedad AlCronómetro (OnTimer) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Timer( )

Comentarios

No es posible cancelar el evento Timer.


Evento Timer - Ejemplo de procedimientos de evento
Evento Timer — Ejemplo de procedimientos de evento

En el ejemplo siguiente se indica una forma de mostrar un reloj digital en un formulario. Un control etiqueta muestra la hora actual, según el reloj del equipo.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario que contenga una etiqueta llamada Reloj. Establezca en la propiedad IntervaloDeCronómetro (TimerInterval) del formulario el valor 1000 milisegundos para actualizar el reloj cada segundo.

Private Sub Form_Timer()

Reloj.Caption = Time	' Actualiza la hora.

End Sub


Evento Timer - Macros
Evento Timer — Macros

Para ejecutar una macro cuando se produzca el evento Timer, establezca la propiedad AlCronómetro (OnTimer) al nombre de la macro.

Comentarios

No es posible usar la acción CancelarEvento en una macro de Timer. Sin embargo, estableciendo la propiedad IntervaloDeCronómetro (TimerInterval) del formulario a 0 se impide que se produzca el evento Timer.


Eventos Delete, BeforeDelConfirm y AfterDelConfirm

•	El evento Delete se produce cuando el usuario realiza alguna acción, como presionar la tecla SUPR, para eliminar un registro, pero antes de que el registro se elimine efectivamente.

•	El evento BeforeDelConfirm se produce después de que el usuario elimine uno o más registros dejándolos en el búfer, pero antes de que Microsoft Access muestre un cuadro de diálogo solicitando al usuario que confirme las eliminaciones.

•	El evento AfterDelConfirm se produce después de que el usuario confirme las eliminaciones y de que los registros se eliminen efectivamente o se cancelen las eliminaciones.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AlEliminar(OnDelete), AntesDeConfirmarEliminación (BeforeDelConfirm) o DespuésDeConfirmarEliminación (AfterDelConfirm) al nombre de la macro o a [Procedimiento de evento].

Una vez eliminado un registro, éste se almacena en un búfer temporal. El evento BeforeDelConfirm se produce después del evento Delete (o, si se ha eliminado más de un registro, después de la eliminación de todos ellos, que habrá provocado un evento Delete por cada uno), pero antes de que aparezca el cuadro de diálogo Confirmar eliminación. Al cancelar el evento BeforeDelConfirm se restaura el registro o registros del búfer y se evita que aparezca el cuadro de diálogo Confirmar eliminación.

El evento AfterDelConfirm se produce después de que el registro o registros se eliminen efectivamente, o después de que se cancelen las eliminaciones. Si no se cancela el evento BeforeDelConfirm, se producirá el evento AfterDelConfirm después de que aparezca el cuadro de diálogo Confirmar eliminación. El evento AfterDelConfirm se produce incluso cuando se cancela el evento BeforeDelConfirm. El procedimiento de evento AfterDelConfirm devuelve información de estado sobre la eliminación. Por ejemplo, puede usar una macro o procedimiento de evento asociado a AfterDelConfirm para volver a calcular totales a los que afecte la eliminación de registros.

Si cancela un evento Delete, los eventos BeforeDelConfirm y AfterDelConfirm no se producirán, ni tampoco aparecerá el cuadro de diálogo Confirmar eliminación.

Nota   Los eventos BeforeDelConfirm y AfterDelConfirm no se producen, ni se muestra el cuadro de diálogo Confirmar eliminación, cuando se desactiva la casilla de verificación Cambios en los registros de la sección Confirmar de la ficha Modificar/Buscar del cuadro de diálogo Opciones, que aparece al hacer clic en el comando Opciones del menú Herramientas.

Ejecutando una macro o procedimiento de evento cuando se produce el evento Delete, se puede impedir que se elimine un registro, o permitir que se elimine sólo cuando se den ciertas condiciones. También puede usar un evento Delete para mostrar un cuadro de diálogo preguntando al usuario si desea eliminar un registro antes de hacerlo efectivamente.

Para eliminar un registro puede hacer clic en el comando Eliminar registro del menú Edición. De este modo eliminará el registro actual (el que indica el selector de registro). También puede hacer clic en el selector de registro o en el comando Seleccionar registro del menú Edición para seleccionar el registro y luego presionar la tecla SUPR para eliminarlo. Si hace clic en Eliminar registro, en el selector de registro del registro actual o en Seleccionar registro, se producirán los eventos Exit y LostFocus para el control que tenga el enfoque. Si ha modificado algún dato del registro, se producirán los eventos BeforeUpdate y AfterUpdate para el registro antes que los eventos Exit y LostFocus. Si hace clic en el selector de registro de un registro distinto, se producirá también el evento Current para ese registro.

Una vez eliminado el registro, el enfoque pasará al registro siguiente, produciéndose para él el evento Current seguido de los eventos Enter y GotFocus para su primer control.

En ese momento se produce el evento BeforeDelConfirm, inmediatamente antes de que Microsoft Access muestre el cuadro de diálogo Confirmar eliminación solicitando que se confirme la eliminación. Después de responder al cuadro de diálogo, confirmando la eliminación o cancelándola, se produce el evento AfterDelConfirm.

Es posible eliminar más de un registro a la vez. El evento Delete se produce después de la eliminación de cada registro. De esta forma tendrá acceso a los datos de cada registro antes de su eliminación efectiva, y podrá confirmar o cancelar cada eliminación en la macro o procedimiento de evento Delete. Cuando se elimina más de un registro, los eventos Current del registro siguiente al último eliminado y Enter y GotFocus de su primer control no se producen hasta después de la eliminación de todos los registros. En otras palabras, el evento Delete se produce para cada registro seleccionado, pero no ocurre ningún otro evento hasta que se eliminan todos los registros seleccionados. Los eventos BeforeDelConfirm y AfterDelConfirm tampoco se producen hasta después de la eliminación de todos los registros seleccionados.


Eventos Delete, BeforeDelConfirm y AfterDelConfirm - Macros
Eventos Delete, BeforeDelConfirm y AfterDelConfirm — Macros

Para ejecutar una macro cuando se produzca un evento Delete, BeforeDelConfirm o AfterDelConfirm, establezca la propiedad AlEliminar(OnDelete), AntesDeConfirmarEliminación (BeforeDelConfirm) o DespuésDeConfirmarEliminación (AfterDelConfirm) al nombre de la macro.

Comentarios

Puede usar una macro de Delete para mostrar el cuadro de diálogo Confirmar eliminación preguntando al usuario si desea eliminar un registro antes de eliminarlo efectivamente.

Puede usar una macro de BeforeDelConfirm o AfterDelConfirm para responder siempre que el usuario elimine un registro. Sin embargo, las macros de BeforeDelConfirm y AfterDelConfirm no pueden establecer el argumento que determina si se muestra el cuadro de diálogo Confirmar eliminación, ni tampoco pueden devolver el argumento que indica el estado de la eliminación, por lo que normalmente con estos eventos se utilizan procedimientos de evento.

Puede usar la acción CancelarEvento en una macro de Delete para cancelar la eliminación.

Puede usar la acción CancelarEvento en una macro de BeforeDelConfirm par cancelar la eliminación de todos los registros eliminados. Al hacerlo, no aparecerá el cuadro de diálogo Confirmar eliminación. Sin embargo, el evento AfterDelConfirm se produce incluso cuando se cancela el evento BeforeDelConfirm.

No es posible usar la acción CancelarEvento en una macro de AfterDelConfirm macro.


Eventos Delete, BeforeDelConfirm y AfterDelConfirm - Procedimientos de evento
Eventos Delete, BeforeDelConfirm y AfterDelConfirm — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produce un evento Delete, BeforeDelConfirm o AfterDelConfirm, establezca la propiedad AlEliminar(OnDelete), AntesDeConfirmarEliminación (BeforeDelConfirm) o DespuésDeConfirmarEliminación (AfterDelConfirm) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_Delete(Cancel As Integer)

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)

Private Sub Form_AfterDelConfirm(Status As Integer)

El procedimiento de evento Delete tiene el argumento siguiente:

Argumento	Descripción
Cancel	Su valor determina si se produce el evento Delete. Estableciendo Verdadero (True) (–1) en el argumento Cancel se cancela el evento Delete.
El procedimiento de evento BeforeDelConfirm tiene los argumentos siguientes:

Argumento	Descripción
Cancel	Su valor determina si se produce el evento BeforeDelConfirm. Estableciendo Verdadero (True)en el argumento Cancel se cancela el evento BeforeDelConfirm y se evita que aparezca el cuadro de diálogo Confirmar eliminación. Si se cancela el evento, se restauran los registros originales, pero aun así se sigue produciendo el evento AfterDelConfirm. Si se establece Verdadero (True)en Cancel, el argumento Response se ignora.
	Si en Cancel se establece Falso (False) (0), que es la opción predeterminada, Microsoft Access usará el valor del argumento Response para determinar el tipo de respuesta al evento Delete.
Response	Su valor determina si Microsoft Access muestra o no el cuadro de diálogo Confirmar eliminación, donde pregunta si debe eliminar el registro. En el argumento Response se puede establecer una de las siguientes constantes intrínsecas:
	Constante	Descripción
	acDataErrContinue	Continúa sin mostrar el cuadro de diálogo Confirmar eliminación. Estableciendo Falso (False) en el argumento Cancel y acDataErrContinue en el argumento Response, se permite que Microsoft Access elimine los registros sin pedir confirmación al usuario.
	acDataErrDisplay	(Predeterminado) Muestra el cuadro de diálogo Confirmar eliminación.
El procedimiento de evento AfterDelConfirm tiene el argumento siguiente:

Argumento	Descripción
Status	Su valor indica si un registro se ha eliminado o no. Este argumento puede ser una de las siguientes constantes intrínsecas:
	Constante	Descripción
	acDeleteOK	Indica que la eliminación se ha realizado con éxito.
	acDeleteCancel	Indica que la eliminación se ha cancelado en Visual Basic.
	acDeleteUserCancel	Indica que el usuario ha cancelado la eliminación.
Comentarios

El evento AfterDelConfirm no puede cancelarse.

Puede usar estos eventos para personalizar la forma en que se eliminan los registros. Por ejemplo, cuando un usuario elimina un registro, como un registro de empleado, se produce el evento Delete. En el procedimiento de evento Delete puede incluir código para guardar los datos de los campos Id de empleado y Nombre en un conjunto de variables temporales. Cuando se produzca el evento BeforeDelConfirm puede evitar que aparezca el cuadro de diálogo Confirmar. Esto le permite mostrar un cuadro de diálogo personalizado. Cuando se produce el evento AfterDelConfirm y el argumento Status tiene el valor acDeleteOK, puede borrar las variables temporales o guardar la información del empleado en otra tabla.


Eventos Delete, BeforeDelConfirm y AfterDelConfirm - Ejemplos de procedimientos de evento
Eventos Delete, BeforeDelConfirm y AfterDelConfirm — Ejemplos de procedimientos de evento

En el ejemplo siguiente se muestra cómo puede evitar que un usuario elimine registros de una tabla.

Para probar el ejemplo, agregue el procedimiento de evento siguiente a un formulario basado en una tabla. Sitúese en la vista Hoja de datos del formulario e intente eliminar un registro.

Private Sub Form_Delete(Cancel As Integer)

Cancel = True

MsgBox "Este registro no puede eliminarse."

End Sub

En el ejemplo siguiente se muestra cómo puede usar el procedimiento de evento BeforeDelConfirm para suprimir el cuadro de diálogo Confirmar eliminación y mostrar un cuadro de diálogo personalizado al eliminar un registro. También indica la forma de usar el procedimiento de evento AfterDelConfirm para mostrar un mensaje que indique si la eliminación se ha realizado de la forma habitual o si ha sido cancelada en Visual Basic o por el usuario.

Para probar el ejemplo, agregue el siguiente procedimiento de evento a un formulario basado en una tabla o consulta:

Private Sub Form_BeforeDelConfirm(Cancel As Integer, _

Response As Integer)

' Suprime el cuadro de diálogo Confirmar eliminación predeterminado.

Response = acDataErrContinue

' Muestra un cuadro de diálogo personalizado.

If MsgBox("¿Eliminar este registro?", vbOKCancel) = vbCancel Then

Cancel = True

End If

End Sub

Private Sub Form_AfterDelConfirm(Status As Integer)

Select Case Status

Case acDeleteOK

MsgBox "La eliminación ha sido normal."

Case acDeleteCancel

MsgBox "El programador ha cancelado la eliminación."

Case acDeleteUserCancel

MsgBox "El usuario ha cancelado la eliminación."

End Select

End Sub


Eventos BeforeInsert y AfterInsert

•	El evento BeforeInsert se produce cuando el usuario escribe el primer carácter de un nuevo registro, pero antes de que el registro se cree realmente.

•	El evento AfterInsert se produce después de agregar un nuevo registro.

Nota   Cuando se establece el valor de un control con una macro o con Visual Basic no se activan estos eventos.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad AntesDeInsertar (BeforeInsert) o DespuésDeInsertar (AfterInsert) al nombre de la macro o a [Procedimiento de evento].

Puede usar una macro o procedimiento de evento AfterInsert para volver a consultar un conjunto de registros siempre que se agregue uno nuevo.

Los eventos BeforeInsert y AfterInsert son similares a BeforeUpdate y AfterUpdate. El orden en que ocurren es el siguiente:

BeforeInsert ⇒ BeforeUpdate ⇒ AfterUpdate ⇒ AfterInsert.

En la tabla siguiente se resume la interacción entre estos eventos:

Evento	Se produce cuando...
BeforeInsert	El usuario escribe el primer carácter de un nuevo registro.
BeforeUpdate	El usuario actualiza el registro.
AfterUpdate	El registro se actualiza.
AfterInsert	El registro actualizado es nuevo.
Si el primer carácter de un nuevo registro se escribe en un cuadro de texto o cuadro combinado, el evento BeforeInsert se produce antes del evento Change.


Eventos BeforeInsert y AfterInsert - Macros
Eventos BeforeInsert y AfterInsert — Macros

Para ejecutar una macro cuando se produzca el evento BeforeInsert o AfterInsert, establezca en la propiedad AntesDeInsertar (BeforeInsert) o DespuésDeInsertar (AfterInsert) el nombre de la macro.

Comentarios

Puede usar estas macros para mostrar mensajes o información de utilidad. Por ejemplo, puede hacer que la macro de BeforeInsert muestre los datos que precisa el usuario para introducir un nuevo registro.

Puede usar la acción CancelarEvento en una macro de BeforeInsert para cancelar la creación del nuevo registro. Al hacerlo, el enfoque vuelve al nuevo registro, que permanece en blanco (el carácter que ha escrito el usuario se borra).

No es posible usar la acción CancelarEvento en una macro de AfterInsert.


Eventos BeforeInsert y AfterInsert - Procedimientos de evento
Eventos BeforeInsert y AfterInsert — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca un evento BeforeInsert o AfterInsert, establezca la propiedad AntesDeInsertar (BeforeInsert) o DespuésDeInsertar (AfterInsert) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub Form_BeforeInsert(Cancel As Integer)

Private Sub Form_AfterInsert( )

El procedimiento de evento BeforeInsert tiene el argumento siguiente:

Argumento	Descripción
Cancel	Su valor determina si se produce el evento BeforeInsert. Estableciendo Verdadero (True) (–1) en el argumento Cancel se cancela el evento BeforeInsert.
Comentarios

No es posible cancelar el evento AfterInsert.


Eventos BeforeInsert y AfterInsert - Ejemplos de procedimientos de evento
Eventos BeforeInsert y AfterInsert — Ejemplos de procedimientos de evento

En este ejemplo se muestra la forma de usar un procedimiento de evento BeforeInsert para comprobar que el usuario desea crear un nuevo registro, y un procedimiento de evento AfterInsert para volver a consultar el origen de registros del formulario Empleados cada vez que se agrega un nuevo registro.

Para probar el ejemplo, agregue el siguiente procedimiento de evento a un formulario llamado Empleados basado en una tabla o consulta. Sitúese en la vista Hoja de datos del formulario e intente insertar un registro.

Private Sub Form_BeforeInsert(Cancel As Integer)

If MsgBox("¿Insertar aquí un nuevo registro?", vbOKCancel) = vbCancel Then

Cancel = True

End If

End Sub

Private Sub Form_AfterInsert()

Forms!Empleados.Requery

End Sub


Evento Updated

El evento Updated se produce cuando se ha modificado el contenido de un  objeto OLE.

Nota   El evento Updated sólo se aplica a los controles de los formularios, y no a los de los informes.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlActualizar (OnUpdated) al nombre de la macro o a [Procedimiento de evento].

Puede usar este evento para determinar si el contenido de un objeto se ha modificado desde la última vez que se guardó.

El evento Updated se produce cuando se ha modificado el contenido de un objeto OLE. Esta actualización puede provenir de la aplicación con la que se creó el objeto o desde una de sus copias vinculadas. En consecuencia, este evento es asíncrono con respecto a otros eventos de control de Microsoft Access.

Notas

•	El evento Updated y los eventos BeforeUpdate y AfterUpdate de los marcos de objetos dependientes e independientes no están relacionados. El evento Updated se produce cuando se ha modificado el contenido de un objeto OLE, y los eventos BeforeUpdate y AfterUpdate ocurren cuando los datos se actualizan. Aunque no están relacionados, normalmente estos tres eventos se producen cuando se modifica el contenido de un objeto OLE. Generalmente, el evento Updated ocurre antes que BeforeUpdate y AfterUpdate, aunque puede no ser así siempre.

•	El control Calendar incluído con Microsoft Access 97 ya no soporta el evento Updated. Si convierte una base de datos que incluye el control Calendar de una versión anterior de Microsoft Access a Microsoft Access 97, debe mover el código del evento Updated del control Calendar al evento AfterUpdate.


Evento Updated - Macros
Evento Updated — Macros

Para ejecutar una macro cuando se produzca el evento Updated, establezca la propiedad AlActualizar (OnUpdated) al nombre de la macro.

Comentarios

Puede usar una macro de Updated para mostrar un mensaje siempre que se actualicen los datos de un objeto OLE. Sin embargo, las macros no pueden devolver el código que determina la forma en que se ha actualizado el objeto, por lo que normalmente con este evento se utilizan procedimientos de evento.

No es posible usar la acción CancelarEvento en una macro de Updated.


Evento Updated - Procedimientos de evento
Evento Updated — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca un evento Updated, establezca la propiedad AlActualizar (OnUpdated) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub nombrecontrol_Updated(Code As Integer)

El procedimiento de evento Updated tiene los argumentos siguientes:

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento Updated se desea ejecutar.
Code	Su valor indica cómo se ha modificado el objeto OLE. El argumento Code puede ser una de las siguientes constantes intrínsecas:
	Constante	Descripción
	acOLEChanged	Indica que el contenido del objeto ha cambiado.
	acOLESaved	Indica que la aplicación que creó el objeto ha guardado su contenido. Esto ocurre normalmente cuando el usuario hace clic en el comando Actualizar, o el que se use para tal fin.
	acOLEClosed	Indica que la aplicación que creó el objeto ha cerrado el archivo que contiene los datos del mismo.
	acOLERenamed	Indica que la aplicación que creó el objeto ha cambiado el nombre del archivo que contiene los datos del mismo.
Comentarios

Para saber si el contenido de un objeto ha cambiado desde la última vez que se guardó, establezca en el procedimiento de evento Updated una variable pública que indique que es necesario guardar el objeto. Cuando guarde el objeto OLE, restablezca la variable.

No es posible cancelar el evento Updated.


Evento NotInList

El evento NotInList se produce cuando el usuario introduce en el componente cuadro de texto de un cuadro combinado un valor que no se encuentra en la lista del cuadro.

Nota   El evento NotInList sólo se aplica a los controles de formularios, y no a los controles de informes.

Comentarios

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad AlNoEnLista (OnNotInList) al nombre de la macro o a [Procedimiento de evento].

Este evento permite al usuario agregar un nuevo valor a la lista del cuadro combinado.

Para que se produzca el evento NotInList, es necesario que la propiedad LimitarALista (LimitToList) tenga el valor Sí.

El evento NotInList no activa el evento Error.

El evento NotInList se produce para los cuadros combinados en cuya propiedad LimitarALista (LimitToList) se ha establecido Sí al escribir un valor no incluido en la lista e intentar pasar a otro control o guardar el registro. El evento ocurre después de todos los eventos Change del cuadro combinado.

Cuando la propiedad ExpansiónAutomática (AutoExpand) se ha establecido a Sí, Microsoft Access selecciona los valores coincidentes en la lista a medida que el usuario escribe caracteres en el cuadro de texto del cuadro combinado. Si los caracteres que escribe el usuario coinciden con los primeros caracteres de un valor de la lista (por ejemplo, el usuario escribe “Martín” y “Martínez” es un valor de la lista), el evento NotInList no se producirá cuando el usuario se mueva a otro control o guarde el registro. Sin embargo, los caracteres que Microsoft Access agrega a los caracteres que escribe el usuario (en el ejemplo, “ez”) se seleccionan en el cuadro de texto del cuadro combinado. Si el usuario desea que se produzca el evento NotInList en dichos casos (por ejemplo, el usuario desea agregar el nuevo apellido “Martín” a la lista del cuadro combinado), el usuario puede introducir un carácter ESPACIO, RETROCESO o SUPR después del último carácter en el nuevo valor.

Cuando la propiedad LimitarALista (LimitToList) se ha establecido a Sí y la lista del cuadro combinado se despliega, Microsoft Access selecciona los valores coincidentes en la lista a medida que el usuario escribe caracteres en el cuadro de texto del cuadro combinado, aunque la propiedad ExpansiónAutomática (AutoExpand) esté establecida a No. Si el usuario presiona ENTRAR o se mueve a otro control o registro, el valor seleccionado aparece en el cuadro combinado. En este caso, el evento NotInList no se producirá. Para que el vento NotInList se produzca, el usuario no debe desplegar la lista del cuadro combinado.


Evento NotInList - Macros
Evento NotInList — Macros

Para ejecutar una macro cuando se produzca el evento NotInList, establezca la propiedad AlNoEnLista (OnNotInList) al nombre de la macro.

Comentarios

Puede usar una macro de NotInList para agregar un nuevo valor a la lista del cuadro combinado. Cuando se produzca el evento NotInList, abra un cuadro de diálogo personalizado y establezca el nuevo valor en uno de sus controles. Este control deberá depender del campo de la tabla o consulta en la que esté basado el cuadro combinado. Guarde el registro en el cuadro de diálogo personalizado, y luego vuelva a hacer la consulta del cuadro combinado.

No es posible usar la acción CancelarEvento en una macro de NotInList.


Evento NotInList - Procedimientos de evento
Evento NotInList — Procedimientos de evento

Para crear un procedimiento de evento que se ejecute cuando se produzca un evento NotInList, establezca la propiedad AlNoEnLista (OnNotInList) a [Procedimiento de evento] y haga clic en el botón Generar  [image].

Sintaxis

Private Sub nombrecontrol_NotInList(NewData As String, Response As Integer)

El procedimiento de evento NotInList tiene los argumentos siguientes:

Argumento	Descripción
nombrecontrol	Nombre del control cuyo procedimiento de evento NotInList se desea ejecutar.
NewData	Cadena que usa Microsoft Access para trasladar al procedimiento de evento el texto que introduce el usuario en el componente cuadro de texto del cuadro combinado.
Response	Su valor indica la forma en que se ha respondido al evento NotInList. El argumento Response puede ser una de las siguientes constantes intrínsecas:
	Constante	Descripción
	acDataErrDisplay	(Predeterminado) Muestra al usuario el mensaje predeterminado. Puede usar esta opción cuando no desee permitir al usuario agregar nuevos valores a la lista del cuadro combinado.
	acDataErrContinue	No muestra al usuario el mensaje predeterminado. Puede usar esta opción cuando desee mostrar un mensaje personalizado. Por ejemplo, el procedimiento de evento podría presentar un cuadro de diálogo personalizado preguntando si el usuario desea guardar la nueva entrada. Si la respuesta es Sí, el procedimiento la agregaría a la lista y establecería acDataErrAdded en el argumento Response. Si es No, el procedimiento establecería acDataErrContinue en Response.
	acDataErrAdded	No muestra ningún mensaje al usuario, pero permite agregar la entrada a la lista del cuadro combinado en el procedimiento de evento NotInList. Una vez agregada la entrada, Microsoft Access actualizará la lista volviendo a efectuar la consulta del cuadro combinado. A continuación comprobará la cadena con la lista del cuadro combinado y guardará el valor del argumento NewData en el campo del que depende el cuadro combinado. Si la cadena no está en la lista, Microsoft Access mostrará un mensaje de error.
Comentarios

Puede crear un procedimiento de evento NotInList que proporcione al usuario una forma de agregar nuevos elementos a la lista del cuadro combinado. Por ejemplo, puede agregar a la tabla un registro que contenga los valores de la lista, o agregar un valor a la lista origen de la lista del cuadro combinado.

Para agregar una nueva entrada a la lista de un cuadro combinado, el procedimiento de evento debe agregar el valor del argumento NewData al origen de la lista del cuadro. La forma de hacer esto dependerá del tipo del origen de la lista del cuadro combinado, que viene determinado por las propiedades TipoDeOrigenDeLaFila (RowSourceType) y OrigenDeLaFila (RowSource) del cuadro combinado. En el ejemplo de este tema, el procedimiento de evento agrega el nuevo valor a una lista de valores para el cuadro combinado.

Si deja que el usuario cambie el valor escrito originariamente en el cuadro combinado (por ejemplo, en un cuadro de diálogo personalizado), deberá establecer como valor del cuadro combinado la nueva entrada especificada. Con ello se guarda el nuevo valor en el campo del que depende el cuadro combinado. Estableciendo acDataErrContinue en el argumento Response, Microsoft Access agregará el nuevo valor a la lista del cuadro combinado.


Evento NotInList - Ejemplos de procedimientos de evento
Evento NotInList — Ejemplos de procedimientos de evento

En el ejemplo siguiente se usa el evento NotInList para agregar un elemento a un cuadro combinado.

Para probar el ejemplo, cree un cuadro combinado llamado Colores en un formulario. Establezca Sí en la propiedad LimitarALista (LimitToList) del cuadro combinado. Para rellenar el cuadro, establezca Lista de valores en su propiedad TipoDeOrigenDeLaFila (RowSourceType) y especifique una lista de valores separados por caracteres punto y coma como configuración de la propiedad OrigenDeLaFila (RowSource). Por ejemplo, puede usar los valores siguientes como configuración de esta propiedad: Rojo; Verde; Azul.

A continuación, agregue el siguiente procedimiento de evento al formulario. Sitúese en la vista Formulario e introduzca un nuevo valor en el componente de texto del cuadro combinado.

Private Sub Colores_NotInList(NewData As String, _

Response As Integer)

Dim ctl As Control

' Devuelve un objeto de control que apunta al cuadro combinado.

Set ctl = Me!Colores

' Pide al usuario que compruebe que desea agregar un nuevo valor.

If MsgBox("El valor no está en la lista ¿Agregarlo?", vbOKCancel) = vbOK Then

' Establece el argumento Response para indicar que se han agregado los datos.

Response = acDataErrAdded

' Agrega la cadena del argumento NewData al origen de las filas.

ctl.RowSource = ctl.RowSource & ";" & NewData

Else

' Si el usuario elige Cancel, suprimir el mensaje de error y deshacer los cambios.

Response = acDataErrContinue

ctl.Undo

End If

End Sub

Nota   En el ejemplo anterior se agrega un elemento a un cuadro combinado independiente. En el caso de un combinado dependiente, para agregar un elemento a la lista se agrega un valor al origen de datos base. En la mayoría de los casos no basta con agregar un campo a un nuevo registro; pues dependiendo de la estructura de los datos de la tabla, probablemente tendrá que agregar uno o más campos para satisfacer los requisitos de los datos. Por ejemplo, los registros nuevos tienen que incluir valores en todos los campos que formen parte de la clave principal. Si necesita agregar elementos a un cuadro combinado dependiente de forma dinámica, deberá solicitar al usuario que introduzca datos para todos los campos requeridos, que guarde el nuevo registro y que luego vuelva a hacer la consulta del cuadro combinado para que aparezca el nuevo valor.


Sincronización de formularios usando una macro - Ejemplo
Sincronización de formularios usando una macro — Ejemplo

La siguiente macro abre un formulario Lista de productos en la parte inferior derecha del formulario Proveedores, mostrando los productos del proveedor activo. Muestra la utilización de las acciones Eco, CuadroMsj, DetenerMacro, AbrirFormulario y DesplazarTamaño. También muestra la utilización de una expresión condicional con las acciones CuadroMsj y DetenerMacro.

Haga clic en  [image]  para ver los argumentos de cada acción.

	Condición	Acción	Comentario
			Adjuntar al botón Revisar productos del formulario Proveedores.
		Eco	Detener actualización de pantalla mientras se ejecuta la acción (se desactiva el eco).
	EsNulo([Id de proveedor])	CuadroMsj	Si no hay proveedor activo en el formulario Proveedores, mostrar un mensaje...
	...	DetenerMacro	... y detener la macro.
		AbrirFormulario	Abrir el formulario Lista de productos y mostrar la lista de productos del proveedor activo.
		DesplazarTamaño	Coloca el formulario Lista de productos en la parte inferior derecha del formulario Proveedores.


Argumentos de la acción Eco

Argumento	Valor
Activar eco	No
Texto barra de estado


Argumentos de la acción CuadroMsj

Argumento	Valor
Mensaje	Vaya al registro del proveedor cuyos productos desea ver y luego presione de nuevo el botón Revisar productos.
Bip	Sí
Tipo	Ninguno
Título


Argumentos de la acción DetenerMacro

Esta acción no tiene argumentos.


Argumentos de la acción AbrirFormulario

Argumento	Valor
Nombre formulario	Lista de productos
Vista	Hoja de datos
Nombre filtro
Condición WHERE	[Id de proveedor] = Forms![Proveedores]![Id de proveedor]
Modo de datos	Sólo lectura
Modo de la ventana	Normal


Argumentos de la acción DesplazarTamaño

Argumento	Valor
Derecha	6,604cm
Abajo	6,658cm
Ancho	10,414cm
Alto	3,175cm


Aplicar un filtro usando una macro - Ejemplo
Aplicar un filtro usando una macro — Ejemplo

La siguiente macro contiene un conjunto de acciones, cada una de las cuales filtra los registros para un formulario Proveedores. Muestra la utilización de las acciones AplicarFiltro y MostrarTodosRegistros. También muestra la utilización de las condiciones para determinar qué botón de alternar de un grupo de opciones ha sido seleccionado en el formulario. Cada fila de acción se asocia con un botón de alternar que selecciona el conjunto de registros que empiezan con la A, B, C, etc. o todos los registros.

Haga clic en  [image]  para ver los argumentos de cada acción.

	Condición	Acción	Comentario
			Adjuntar a los botones A-Z y Todos en el formulario Proveedores.
	[Filtros de Nombre de compañía] =1	AplicarFiltro	Filtro para nombres de compañías que empiezan con A, À, Á, Â, Ã o Ä.
	[Filtros de nombres de compañías] =2	AplicarFiltro	Filtro para nombres de compañías que empiezan con B.
	[Filtros de nombres de compañía] =3	AplicarFiltro	Filtro para nombres de compañías que empiezan con C o Ç.

... Las filas de acción para la D hasta la Y tienen el mismo formato que los de A hasta C ...

	[Filtros de nombres de compañía] =26	AplicarFiltro	Filtro para nombres de compañías que empiezan con Z, Æ, Ø o Å.
	[Filtros de nombres de compañía] =27	MostrarTodosRegistros	Mostrar todos los registros.


Argumentos de la acción AplicarFiltro (1)

Argumento	Valor
Nombre del filtro
Condición WHERE	[Nombre compañía] Like "[AÀÁÂÃÄ]*"


Argumentos de la acción AplicarFiltro (2)

Argumento	Valor
Nombre del filtro
Condición WHERE	[Nombre compañía] Like "B*"


Argumentos de la acción AplicarFiltro (3)

Argumento	Valor
Nombre del filtro
Condición WHERE	[Nombre compañía] Like "[CÇ]*"


Argumentos de la acción AplicarFiltro (4)

Argumento	Valor
Nombre del filtro
Condición WHERE	[Nombre compañía] Like "[ZÆØÅ]*"


Argumentos de la acción MostrarTodosRegistros

Esta acción no tiene argumentos.


Validación de datos usando una macro - Ejemplo
Validación de datos usando una macro — Ejemplo

La siguiente macro de validación comprueba los códigos postales introducidos en un formulario Proveedores. Muestra el uso de las acciones CuadroMsj, CancelarEvento e IrAControl. Una expresión condicional comprueba el país y el código postal introducido en un registro de un formulario. Si el código postal no está en el formato correcto para el país, la macro muestra un cuadro de mensaje y cancela guardar el registro. Luego le devuelve al control Código postal, en el que puede corregir el error.

Haga clic en  [image]  para ver los argumentos de cada acción.

	Condición	Acción	Comentario
			Adjuntar a la propiedad AntesDeActualizar del formulario Proveedores.
	[País] In ("Francia","Italia","España") And Len([Código postal]) <> 5	CuadroMsj	Si el código postal no es de 5 caracteres, mostrar un mensaje y...
	...	CancelarEvento	... cancelar el evento.
	[País] In ("Australia","Singapur") And Len([Código postal]) <> 4	CuadroMsj	Si el código postal no es de 4 caracteres, mostrar un mensaje y...
	...	CancelarEvento	... cancelar el evento.
	([País] = "Canadá") And ([Código postal] Not Like"[a-z][0-9][a-z] [0-9][a-z][0-9]")	CuadroMsj	Si el código postal no es correcto para Canadá, mostrar un mensaje y...
	...	CancelarEvento	... cancelar el evento.
		IrAControl	Mover el enfoque al control Código postal.


Argumentos de la acción CuadroMsj (1)

Argumento	Valor
Mensaje	El código postal debe ser de 5 caracteres.
Bip	Sí
Tipo	Información
Título	Error de Código postal


Argumentos de la acción CancelarEvento (1)

Esta acción no tiene argumentos.


Argumentos de la acción CuadroMsj (2)

Argumento	Valor
Mensaje	El código postal debe ser de 4 caracteres.
Bip	Sí
Tipo	Información
Título	Error de Código postal


Argumentos de la acción CancelarEvento (2)

Esta acción no tiene argumentos.


Argumentos de la acción CuadroMsj (3)

Argumento	Valor
Mensaje	El código postal no es válido. Ejemplo de código de Canadá: H1J 1C3
Bip	Sí
Tipo	Información
Título	Error de Código postal


Argumentos de la acción CancelarEvento (3)

Esta acción no tiene argumentos.


Argumentos de la acción IrAControl

Argumento	Valor
Nombre del control	Código postal


Establecimiento del valor de un control usando una macro - Ejemplo
Establecimientio del valor de un control usando una macro — Ejemplo

La siguiente macro abre el formulario Productos desde un botón del formulario Proveedores. Muestra la utilización de las acciones Eco, AbrirFormulario, EstablecerValor e IrAControl. La acción EstablecerValor establece el control Id de proveedor del formulario Agregar productos al proveedor activo del formulario Proveedores. A continuación, la acción IrAControl mueve el enfoque al campo Id Categoría, en el que puede empezar a introducir datos para el nuevo producto.

Haga clic en  [image]  para ver los argumentos de cada acción.

	Acción	Comentario
		Adjuntar al botón Agregar productos del formulario Proveedores.
	Eco	Detener la actualización de la pantalla mientras se ejecuta la macro (se desactiva el eco).
	AbrirFormulario	Abrir el formulario Productos.
	EstablecerValor	Establecer el control Id de proveedor al proveedor activo en el formulario Proveedores.
	IrAControl	Ir al control Id Categoría.


Argumentos de la acción Eco

Argumento	Valor
Activar eco	No
Texto de barra de estado


Argumentos de la acción AbrirFormulario

Argumento	Valor
Nombre de formulario	Productos
Vista	Formulario
Nombre de filtro
Condición WHERE
Modo de datos	Agregar
Modo de la ventana	Normal


Argumentos de la acción EstablecerValor

Argumento	Valor
Elemento	Forms![Productos]![Id de proveedor]
Expresión	Id de proveedor


Argumentos de la acción IrAControl

Argumento	Valor
Nombre del control	Id Categoría


Propiedad ReplicationConflictFunction

La propiedad ReplicationConflictFunction permite usar código personalizado de resolución de conflictos para resolver conflictos de datos que se producen entre las réplicas después de la sincronización. Cuando se establece esta propiedad, Microsoft Access llama a la función de resolución de conflictos, en lugar de al Asistente para resolver conflictos, cuando el usuario pide resolver los conflictos.

Valores

Establezca la propiedad ReplicationConflictFunction a una cadena de texto que es el nombre del procedimiento Function al que desea llamar. Observe que el valor debe ser el nombre de un procedimiento Function; no puede ser el nombre de un procedimiento Sub. Microsoft Access llama al Asistente para resolver conflictos, a menos que se haya establecido esta propiedad.

Para establecer por primera vez el valor de esta propiedad desde Visual Basic, debe crear la propiedad y anexarla a la colección Properties del objeto UserDefined Document. Se debe incluir código de tratamiento de errores en el procedimiento para probar el caso en el que la propiedad no exista todavía en la colección Properties. Para obtener más información al respecto, consulte el método CreateProperty.

Cuando se crea y se anexa la propiedad ReplicationConflictFunction, debe proporcionar también un valor True (–1) para el argumento opcional DDL del método CreateProperty. Este argumento asegura que los usuarios no puedan cambiar o eliminar el nuevo objeto Property a menos que tengan permisos dbSecWriteDef. Si no suministra un valor True para este argumento, no se llamará al código de resolución de conflictos.

Para devolver de nuevo el control al Asistente para resolver conflictos, elimine esta propiedad de la colección Properties.

También puede agregar o eliminar esta propiedad en la ficha Personalizar del cuadro de diálogo Propiedades de NombreBaseDeDatos, disponible haciendo clic en Propiedades de la base de datos en el menú Archivo.

Observaciones

Si el mismo registro de una base de datos replicada se ha cambiado en una o más réplicas, se producirán conflictos cuando sincronice la réplica con el conjunto de réplicas. Cuando decida resolver estos conflictos, Microsoft Access llama al Asistente para resolver conflictos. El asistente presenta cada conflicto al usuario, que debe determinar manualmente cuál de los registros cambiados contiene los datos correctos.

Si prefiere automatizar la resolución de conflictos para la aplicación, puede escribir procedimientos personalizados para resolver los conflictos, y luego anular la funcionalidad incorporada estableciendo la propiedad ReplicationConflictFunction. Se debe escribir una única función que actúe como punto de entrada en el código de resolución de conflictos. Luego establezca la propiedad ReplicationConflictFunction al nombre de esta función.

Si escribe su propio código de resolución de conflictos, también debe tratar los errores de diseño de las réplicas y los errores de los datos de las réplicas. Para ver un ejemplo, abra la base de datos asistente Wzcnf80.mda en la carpeta Office y examine su código de origen.


Ejemplo de la propiedad ReplicationConflictFunction

La siguiente función establece una propiedad de Microsoft Access en un objeto DAO. Esta función se utiliza para establecer la propiedad ReplicationConflictFunction. Si la propiedad no existe todavía en la colección Properties del objeto UserDefined Document, Microsoft Access la crea y la anexa. Observe que para establecer esta propiedad, debe proporcionar un valor True (–1) para el argumento opcional blnDDL.

Function EstablecerPropiedadAccess(obj As Object, strName As String, _

intType As Integer, varSetting As Variant, _

Optional blnDDL As Boolean) As Boolean

Dim prp As Property

Const intPropNotFound As Integer = 3270

On Error GoTo Error_EstablecerPropiedadAccess

' Referencia explícita a la colección Properties.

obj.Properties(strName) = varSetting

obj.Properties.Refresh

EstablecerPropiedadAccess = True

Exit_EstablecerPropiedadAccess:

Exit Function

Error_EstablecerPropiedadAccess:

If Err = intPropNotFound Then

' Comprobar si se ha pasado argumento opcional.

If Not IsMissing(blnDDL) Then

' Crear propiedad, indicar tipo, establecer

' valor inicial, indicar DDL.

Set prp = obj.CreateProperty(strName, intType, varSetting, blnDDL)

Else

' Crear propiedad, indicar tipo, establecer

' valor inicial.

Set prp = obj.CreateProperty(strName, intType, varSetting)

End If

' Anexar objeto Property a colección Properties.

obj.Properties.Append prp

obj.Properties.Refresh

EstablecerPropiedadAccess = True

Resume Exit_EstablecerPropiedadAccess

Else

MsgBox Err & ": " & vbCrLf & Err.Description

EstablecerPropiedadAccess = False

Resume Exit_EstablecerPropiedadAccess

End If

End Function

El siguiente procedimiento llama a la función EstablecerPropiedadAccess para establecer la propiedad ReplicationConflictFunction:

Sub SetConflictResolver()

Dim dbs As Database, ctr As Container, doc As Document

Dim blnReturn As Boolean

' Devolver referencia a base de datos activa.

Set dbs = CurrentDb

' Devolver referencia a contenedor Bases de datos.

Set ctr = dbs.Containers!Databases

' Devolver referencia a objeto Document SummaryInfo.

Set doc = ctr.Documents!userdefined

blnReturn = EstablecerPropiedadAccess(doc, _

"ReplicationConflictFunction", dbText, "CustomResolver", True)

' Evaluar valor devuelto.

If blnReturn = True Then

Debug.Print "Propiedad establecida correctamente."

Else

Debug.Print "Propiedad no establecida correctamente."

End If

End Sub


Método AccessError

El método AccessError se utiliza para devolver la cadena descriptiva asociada con un error de Microsoft Access o un error de DAO.

Sintaxis

[aplicación.]AccessError(númeroerror)

El método AccessError utiliza los siguientes argumentos.

Argumento	Descripción
aplicación	Opcional. El objeto Application.
Númeroerror	El número de error para el que desea devolver una cadena descriptiva.
Observaciones

El método AccessError se utiliza para devolver la cadena descriptiva asociada con un error de Microsoft Access o un error DAO cuando el error no se produjo en realidad.

El método Raise de Visual Basic se utiliza para eliminar un error de Visual Basic. Una vez haya eliminado el error, puede determinar su cadena descriptiva asociada leyendo la propiedad Descripción del objeto Err.

El método Raise no se puede usar para quitar un error de Microsoft Access o un error DAO. Sin embargo, puede usar el método AccessError para devolver la cadena descriptiva asociada con estos errores, sin tener que generar el error.

Puede usar el método AccessError para devolver una cadena descriptiva desde dentro de un evento Error de un formulario.

Si se ha producido el error de Microsoft Access, puede devolver la cadena descriptiva usando el método AccessError o la propiedad Descripción del objeto Err de Visual Basic.


Ejemplo del método AccessError

La siguiente función devuelve una cadena de errores de cualquier número de error válido:

Function ErrorCadena(lngError As Long) As String

Const conAppError = "Error definido por la aplicación o definido por el objeto"

On Error Resume Next

Err.Raise lngError

If Err.Description = conAppError Then

ErrorString = AccessError(lngError)

ElseIf Err.Description = "" Then

MsgBox "No hay ninguna cadena de error asociada con este número."

Else

ErrorString = Err.Description

End If

End Function


Función CodeDb

Puede utilizar la función CodeDb en un módulo de código para determinar el nombre del objeto Database que se refiere a la base de datos en la cual se está ejecutando actualmente el código. Use la función CodeDb para tener acceso a los objetos de acceso a datos (DAO) que forman parte de una base de datos de biblioteca.

Por ejemplo, puede usar la función CodeDb en un módulo de una base de datos de biblioteca para crear un objeto Database que se refiera a la base de datos de biblioteca. Entonces puede abrir un conjunto de registros basado en una tabla de la base de datos de biblioteca.

Sintaxis

Set baseDeDatos = CodeDb

La función CodeDb tiene el argumento siguiente:

Argumento	Descripción
baseDeDatos	Variable de tipo objeto Database.
Comentarios

La función CodeDb devuelve un objeto Database cuya propiedad Nombre (Name) es la ruta de acceso completa y el nombre de la base de datos desde la cual se la llama. Esta función puede ser útil cuando sea necesario manipular objetos de acceso a datos de la base de datos de biblioteca.

Al llamar a una función de una base de datos de biblioteca, la base de datos desde la que se hace la llamada sigue siendo la base de datos actual, incluso cuando el código se está ejecutando en un módulo de la base de datos de biblioteca. Para poder referirse a los objetos de acceso a datos de la base de datos de biblioteca es necesario conocer el nombre del objeto Database que representa la base de datos de biblioteca.

Por ejemplo, suponga que tiene en una base de datos de biblioteca una tabla que contiene mensajes de error. Para manipular los datos de la tabla desde el código, podría usar la función CodeDb para determinar el nombre del objeto Database que se refiere a la base de datos de biblioteca que contiene la tabla.

Si la función CodeDb se ejecuta desde la base de datos actual, devolverá el nombre de la misma, que coincidirá con el devuelto por la función CurrentDb.


Ejemplo de la función CodeDb

En el ejemplo siguiente se usa la función CodeDb para devolver un objeto Database que se refiere a una base de datos de biblioteca. La base de datos de biblioteca contiene una tabla llamada Errores y el código que se está ejecutando. Cuando la función CodeDb determina esta información, la función ObtenerCadenaError abre un conjunto de registros de tipo tabla basado en la tabla Errores, y extrae un mensaje de error de un campo llamado DatosError según el valor de tipo Integer pasado a la función.

Function ObtenerCadenaError(ByVal intError As Integer) As String

Dim dbs As Database, rst As RecordSet

' La variable se refiere a la base de datos en la que se está ejecutando el código.

Set dbs = CodeDb

' Crea un conjunto de registros de tipo tabla.

Set rst = dbs.OpenRecordSet("Errores", dbOpenTable)

' Establece el índice como clave principal (campo IdError)

rst.Index = "PrimaryKey"

' Busca el número de error pasado a la función ObtenerCadenaError.

rst.Seek "=", intError

' Devuelve el mensaje de error asociado.

ObtenerCadenaError = rst.Fields!DatosError.Value

rst.Close

End Function


Funciones CreateControl y CreateReportControl

•	La función CreateControl crea un control en el formulario abierto especificado.

•	La función CreateReportControl crea un control en el informe abierto especificado.

Por ejemplo, suponga que está creando un asistente personalizado que permita a los usuarios generar fácilmente un formulario. Puede utilizar la función CreateControl en el asistente para agregar al formulario los controles necesarios.

Sintaxis

CreateControl(nombreformulario, tipocontrol[, sección[, principal[, nombrecolumna[, izquierdo[, superior[, ancho[, alto]]]]]]])

CreateReportControl(nombreinforme, tipocontrol[, sección[, principal[, nombrecolumna[, izquierdo[, superior[, ancho[, alto]]]]]]])

Las funciones CreateControl y CreateReportControl tienen los argumentos siguientes:

Argumento	Descripción
nombreformulario, nombreinforme	Expresión de cadena que identifica el nombre del formulario o informe abierto en el cual se desea crear el control.
tipocontrol	Una de las constantes intrínsecas siguientes, que identifican el tipo de control a crear. Para ver estas constantes y pegarlas en el código desde el Examinador de objetos, haga clic en Examinador de objetos  [image] , en la barra de herramientas Visual Basic, luego haga clic en Access dentro del cuadro Proyecto/Biblioteca, y por último elija Constants en el cuadro Clases.
	Constante	Control
	acLabel	Etiqueta
	acRectangle	Rectángulo
	acLine	Línea
	acImage	Imagen
	acCommandButton	Botón de comando
	acOptionButton	Botón de opción
	acCheckBox	Casilla de verificación
	acOptionGroup	Grupo de opciones
	acBoundObjectFrame	Marco de objeto dependiente
	acTextBox	Cuadro de texto
	acListBox	Cuadro de lista
	acComboBox	Cuadro combinado
	acSubform	Subformulario
	acObjectFrame	Marco de objeto independiente
	acPage	Página (Page)
	acPageBreak	Salto de página
	acCustomControl	Control ActiveX
	acToggleButton	Botón de alternar
	acTabCtl	Control ficha
sección	Una de las constantes intrínsecas siguientes, que identifican la sección que contendrá el nuevo control.
	Constante	Sección
	acDetail	(Predeterminada) Sección Detalle
	acHeader	Encabezado del formulario o informe
	acFooter	Pie del formulario o informe
	acPageHeader	Encabezado de página
	acPageFooter	Pie de página
	acGroupLevel1Header	Encabezado a nivel de grupo 1 (sólo informes)
	acGroupLevel1Footer	Pie a nivel de grupo 1 (sólo informes)
	acGroupLevel2Header	Encabezado a nivel de grupo 2 (sólo informes)
	acGroupLevel2Footer	Pie a nivel de grupo 2 (sólo informes)
	Si un informe tiene niveles de grupo adicionales, los pares encabezado/pie se numeran consecutivamente, comenzando por 9.
principal	Expresión de cadena que identifica el nombre del control principal de un control adjunto. En el caso de los controles que no tienen control principal, especifique una cadena de longitud cero en este argumento u omítalo.
nombrecolumna	Nombre del campo del que dependerá el control, si va a ser un control dependiente de datos.
	Si el control no va a depender de un campo, especifique una cadena de longitud cero en este argumento.
izquierdo, superior	Expresiones numéricas que indican las coordenadas de la esquina superior izquierda del control en twips.
ancho, alto	Expresiones numéricas que indican el ancho y el alto del control en twips.
Comentarios

Puede utilizar las funciones CreateControl y CreateReportControl en un asistente personalizado para crear controles en un formulario o informe. Ambas funciones devuelven un objeto Control.

Sólo es posible usar las funciones CreateControl y CreateReportControl en la vista Diseño del formulario o en la vista Diseño del informe, respectivamente.

Con el argumento principal puede identificar la relación entre un control principal y un control subordinado. Por ejemplo, si un cuadro de texto tiene una etiqueta adjunta, el cuadro de texto es el control principal, y la etiqueta el control subordinado. Al crear el control etiqueta, establezca en su argumento principal una cadena con el nombre del control principal. Al crear el cuadro de texto, establezca en su argumento principal una cadena de longitud cero.

También es posible establecer el argumento principal al crear casillas de verificación, botones de opción o botones de alternar. Un grupo de opciones es el control principal de todas las casillas de verificación, botones de opción o botones de alternar que contenga. Los únicos controles que pueden tener un control principal son las etiquetas, las casillas de verificación, los botones de opción y los botones de alternar. Estos controles también pueden crearse de forma independiente, sin un control principal.

Para especificar el argumento nombrecolumna debe basarse en el tipo de control que va a crear y si va a ser dependiente de un campo de una tabla o no. Los controles que pueden depender de un campo son el cuadro de texto, el cuadro de lista, el cuadro combinado, el grupo de opciones y el marco de objeto dependiente. Además, el botón de alternar, el botón de opción y la casilla de verificación pueden depender de un campo cuando no están contenidos en un grupo de opciones.

Si especifica el nombre de un campo en el argumento nombrecolumna, creará un control dependiente de ese campo. En tal caso, en todas las propiedades del control se establecerán los valores de las propiedades correspondientes del campo. Por ejemplo, el valor de la propiedad ReglaDeValidación (ValidationRule) del control será el mismo para el control y para el campo.

Nota   Tanto si el asistente crea controles en un formulario o informe nuevo como en uno ya existente, primero es necesario abrirlo en la vista Diseño.

Para eliminar un control de un formulario o informe, use las instrucciones DeleteControl y DeleteReportControl.


Ejemplo de las Funciones CreateControl y CreateReportControl

En el ejemplo siguiente se crea un formulario nuevo basado en una tabla llamada Pedidos. A continuación se usa la función CreateControl para crear un control cuadro de texto y un control etiqueta adjunto al mismo.

Sub NuevosControles()

Dim frm As Form

Dim ctlLabel As Control, ctlText As Control

Dim intDataX As Integer, intDataY As Integer

Dim intLabelX As Integer, intLabelY As Integer

' Crea el nuevo formulario con la tabla Pedidos como origen de registros.

Set frm = CreateForm

frm.RecordSource = "Pedidos"

' Establece las coordenadas de los nuevos controles.

intLabelX = 100

intLabelY = 100

intDataX = 1000

intDataY = 100

' Crea un control cuadro de texto independiente de tamaño predeterminado en la sección de detalle.

Set ctlText = CreateControl(frm.Name, acTextBox, , "", "", _

intDataX, intDataY)

' Crea un control etiqueta adjunto para el cuadro de texto.

Set ctlLabel = CreateControl(frm.Name, acLabel, , ctlText.Name, _

"NuevaEtiqueta", intLabelX, intLabelY)

' Restaura el formulario.

DoCmd.Restore

End Sub


Funciones CreateForm y CreateReport

•	La función CreateForm crea un formulario y devuelve un objeto Formulario (Form).

•	La función CreateReport crea un informe y devuelve un objeto Informe (Report).

Por ejemplo, suponga que está creando un asistente personalizado para crear un informe de ventas. Puede utilizar la función CreateReport en el asistente para crear un nuevo informe basándose en la plantilla de informe especificada.

Sintaxis

CreateForm([baseDeDatos[, plantillaformulario]])

CreateReport([baseDeDatos[, plantillainforme]])

Las funciones CreateForm y CreateReport tienen los argumentos siguientes:

Argumento	Descripción
baseDeDatos	Expresión de cadena que identifica el nombre de la base de datos que contiene la plantilla del formulario informe que se desea usar para crear un formulario o informe. Si omite este argumento, se usará la base de datos actual (el valor que devuelve la función CurrentDb). Si especifica una base de datos distinta de la actual, tal base de datos deberá abrirse como base de datos de biblioteca.
plantillaformulario, plantillainforme	Expresión de cadena que identifica el nombre del formulario o informe que se desea usar como plantilla para crear un nuevo formulario o informe. Si se omite este argumento, Microsoft Access basará el nuevo formulario o informe en la plantilla especificada en la ficha Formularios/Informes del cuadro de diálogo Opciones, que aparece al hacer clic en el comando Opciones del menú Herramientas.
Comentarios

Puede utilizar las funciones CreateForm y CreateReport al diseñar un asistente para crear nuevos formularios o informes.

Las funciones CreateForm y CreateReport abren un formulario o informe nuevo, minimizado, en la vista Diseño del formulario o en la vista Diseño del informe, respectivamente.

El formulario o informe especificado en plantillaformulario o plantillainforme puede ser uno creado específicamente para su uso como plantilla, o bien cualquier otro formulario o informe de la base de datos que identifica el argumento baseDeDatos. Observe que si la base de datos especificada en baseDeDatos no es la base de datos actual, deberá estar abierta como base de datos de biblioteca. Si desea más información sobre las bases de datos de biblioteca, vea el Capítulo 12, "Uso de bases de datos de biblioteca y bibliotecas de vínculo dinámico" en Creación de aplicaciones con Microsoft Access 97.

Nota   Si ha creado en otra base de datos un formulario o informe que desea usar como plantilla, basta con importarlo a la base de datos actual, en lugar de cargar una base de datos de biblioteca. Al hacerlo, asegúrese de que aparece el nombre correcto en el cuadro Plantilla para formulario o Plantilla para informe de la ficha Formularios/Informes del cuadro de diálogo Opciones. Los formularios o informes creados posteriormente con la función CreateForm o CreateReport se basarán en esa plantilla.

Si el nombre indicado en el argumento plantillaformulario o plantillainforme no es válido, Visual Basic usará la plantilla especificada en Plantilla para formulario o Plantilla para informe, en la ficha Formularios/Informes del cuadro de diálogo Opciones.

Al crear un formulario o informe con la función CreateForm o CreateReport, en la propiedad TieneUnMóduloAsociado (HasModule) del formulario o informe se establece Falso (False) (0). Puede establecer Verdadero (True) (–1) en esta propiedad si desea que el nuevo formulario o informe tenga un módulo de clase.

Las funciones CreateForm y CreateReport crean los formularios o informes minimizados.


Ejemplo de las funciones CreateForm y CreateReport

En el ejemplo siguiente se crea un informe en la base de datos actual utilizando la plantilla especificada en Plantilla de informe, en la ficha Formularios/Informes del cuadro de diálogo Opciones.

Sub NormalReport()

Dim rpt As Report

Set rpt = CreateReport	' Crea un informe minimizado.

DoCmd.Restore	' Restaura el informe.

End Sub

En el ejemplo siguiente se crea un nuevo formulario en la base de datos de ejemplo Neptuno, basándose en el formulario Clientes, y se establece en su propiedad OrigenDelRegistro (RecordSource) la tabla Clientes. Ejecute este código desde la base de datos de ejemplo Neptuno.

Sub NewForm()

Dim frm As Form

' Crea un formulario basándose en el formulario Clientes.

Set frm = CreateForm( , "Clientes")

DoCmd.Restore

' Establece en la propiedad RecordSource la tabla Clientes.

frm.RecordSource = "Clientes"

End Sub


Función CreateGroupLevel

Puede utilizar la función CreateGroupLevel para especificar un campo o una expresión con la que agrupar u ordenar los datos de un informe.

Por ejemplo, suponga que está creando un asistente personalizado que ofrece al usuario distintos campos por los que agrupar los datos al diseñar un informe. Puede llamar a la función CreateGroupLevel desde el asistente para crear los grupos correspondientes de acuerdo con la elección del usuario.

Sintaxis

CreateGroupLevel(informe, expresión, encabezado, pie)

La función CreateGroupLevel tiene los argumentos siguientes:

Argumento	Descripción
informe	Expresión de cadena que identifica el nombre del informe que contiene el nuevo nivel de agrupamiento.
expresión	Expresión de cadena que identifica el campo o expresión según la cual se ordena o se agrupa.
encabezado, pie	Valor de tipo Integer que indica si un campo o expresión tiene asociado un encabezado y/o pie de grupo. Si el argumento encabezado o pie es Verdadero (True) (–1), el campo o expresión tendrá un encabezado o un pie, respectivamente. Si es Falso (False) (0), no lo tendrá. Puede crear un encabezado y también un pie estableciendo Verdadero (True) en los dos argumentos.
Comentarios

Puede utilizar la función CreateGroupLevel al diseñar un asistente para crear un informe con grupos o totales. La función CreateGroupLevel agrupa u ordena los datos según el campo o expresión especificada, y crea un encabezado y/o un pie para el nivel de agrupamiento.

La función CreateGroupLevel sólo está disponible en la vista Diseño del informe.

Microsoft Access usa una matriz, la de la propiedad GroupLevel, para hacer un seguimiento de los niveles de agrupamiento establecidos en un informe. La función CreateGroupLevel agrega un nuevo nivel de agrupamiento a esta matriz, basándose en el argumento expresión, y devuelve un valor de índice que representa la posición del nuevo nivel de agrupamiento en la matriz. El primer campo o expresión por el cual se ordena o agrupa es el nivel cero, el segundo es el nivel 1, y así sucesivamente. Es posible tener hasta diez niveles de agrupamiento en un informe (de 0 a 9).

Al especificar Verdadero (True) en el argumento encabezado, en el argumento pie, o en ambos, en las propiedades Encabezado del grupo y Pie del grupo del informe se establece el valor Sí, y se crea un encabezado o un pie para el nivel de agrupamiento.

Una vez creado un encabezado o un pie, puede establecer otras propiedades de nivel de grupo: AgruparEn (GroupOn), IntervaloDelGrupo (GroupInterval) y MantenerJuntos (KeepTogether). Puede establecer estas propiedades en Visual Basic o en el cuadro Ordenar y agrupar del informe, que aparece al hacer clic en Ordenar y agrupar  [image]  en la barra de herramientas Diseño del informe.

Nota   Si el asistente crea niveles de agrupamiento en un informe nuevo o ya existente, éste deberá abrirse en vista Diseño.


Ejemplo de la función CreateGroupLevel

En el ejemplo siguiente se crea un nivel de agrupamiento basado en el campo FechaPedido de un informe llamado InformePedidos. El informe en el que se va a crear el nivel de agrupamiento debe estar abierto en la vista Diseño. Como los argumentos encabezado y pie tienen el valor Verdadero (True) (–1), la función crea un encabezado y un pie para el nivel de agrupamiento. A continuación se establece el tamaño del encabezado y del pie.

Sub CreateGL()

Dim varGroupLevel As Variant

' Crea un nuevo nivel de agrupamiento con el campo FechaPedido.

varGroupLevel = CreateGroupLevel("InformePedidos", "FechaPedido", _

True, True)

' Establece el alto de las secciones encabezado y pie.

Reports!InformePedidos.Section(acGroupLevel1Header).Height = 400

Reports!InformePedidos.Section(acGroupLevel1Footer).Height = 400

End Sub


Instrucciones DeleteControl y DeleteReportControl

•	La instrucción DeleteControl elimina de un formulario el control especificado.

•	La instrucción DeleteReportControl elimina de un informe el control especificado.

Por ejemplo, suponga que tiene un procedimiento que deba ejecutarse la primera vez que cada usuario inicie una sesión en una base de datos. Puede establecer el procedimiento en la propiedad AlHacerClic (OnClick) de un botón del formulario. Cuando el usuario haya iniciado la sesión y ejecutado el procedimiento, puede usar la instrucción DeleteControl para eliminar de forma dinámica el botón de comando del formulario.

Sintaxis

DeleteControl nombreformulario, nombrecontrol

DeleteReportControl nombreinforme, nombrecontrol

Las instrucciones DeleteControl y DeleteReportControl tienen los argumentos siguientes:

Argumento	Descripción
nombreformulario, nombreinforme	Expresión de cadena que identifica el nombre del formulario o informe que contiene el control a eliminar.
nombrecontrol	Expresión de cadena que identifica el nombre del control a eliminar.
Comentarios

Las instrucciones DeleteControl y DeleteReportControl sólo están disponibles en la vista Diseño del formulario y en la vista Diseño del informe, respectivamente.

Nota   Si está creando un asistente que elimina un control de un formulario o informe, el asistente deberá abrir primero el formulario o informe en la vista Diseño para poder eliminar el control.


Ejemplo de las instrucciones DeleteControl y DeleteReportControl

En el ejemplo siguiente se crea un formulario con un botón de comando, y se muestra un mensaje que pregunta al usuario si desea eliminarlo. Si el usuario hace clic en Sí, se elimina el botón de comando.

Sub EliminaBotón()

Dim frm As Form, ctlNew As Control

Dim strMsg As String, intResponse As Integer, intDialog As Integer

' Crea un nuevo formulario y obtiene un puntero al mismo.

Set frm = CreateForm

' Crea un nuevo botón de comando.

Set ctlNew = CreateControl(frm.Name, acCommandButton)

' Restaura el formulario.

DoCmd.Restore

' Establece el título.

ctlNew.Caption = "Nuevo botón de comando"

' Establece el tamaño del control.

ctlNew.SizeToFit

' Pregunta al usuario si desea eliminar el control.

strMsg = "Se va a eliminar " & ctlNew.Name &". ¿Continuar?"

' Define los botones a mostrar en el cuadro de diálogo.

intDialog = vbYesNo + vbCritical + vbDefaultButton2

intResponse = MsgBox(strMsg, intDialog)

If intResponse = vbYes Then

' Elimina el control.

DeleteControl frm.Name, ctlNew.Name

End If

End Sub


Función SysCmd

Puede utilizar la función SysCmd para realizar una de las acciones siguientes:

•	Mostrar un indicador de evolución o el texto opcional que especifique en la barra de estado.

•	Devolver información sobre Microsoft Access y sus archivos asociados.

•	Devolver el estado del objeto de base de datos especificado para indicar si está abierto, si es nuevo o si ha sido modificado y aún no se ha guardado.

Por ejemplo, si está generando un asistente personalizado que crea un nuevo formulario, puede usar la función SysCmd para mostrar un indicador de evolución que represente el progreso del asistente al generar el formulario.

Sintaxis

ValorDevuelto = SysCmd(acción[, texto][, valor])

EstadoObjeto = SysCmd(acción[, tipoobjeto][, nombreobjeto])

La función SysCmd tiene los argumentos siguientes:

Argumento	Descripción
acción	Una de las constantes intrínsecas siguientes, que identifican el tipo de acción a realizar.
	El conjunto de constantes siguientes son para un indicador de evolución. La función SysCmd devuelve Null si estas acciones tienen éxito. En caso contrario, Microsoft Access genera un error en tiempo de ejecución.
	acSysCmdInitMeter	Inicializa el indicador de evolución. Al especificar esta acción es necesario indicar los argumentos texto y valor.
	acSysCmdUpdateMeter	Actualiza el indicador de evolución con el valor especificado. Al especificar esta acción es necesario indicar el argumento texto.
	acSysCmdRemoveMeter	Elimina el indicador de evolución.
	acSysCmdSetStatus	Establece en la barra de estado el argumento texto.
	acSysCmdClearStatus	Restablece el texto de la barra de estado.
	El conjunto de constantes siguiente proporciona información sobre Microsoft Access.
	acSysCmdRuntime	Devuelve Verdadero (True) (–1) si está en ejecución una versión en tiempo de ejecución de Microsoft Access.
	acSysCmdAccessVer	Devuelve el número de versión de Microsoft Access.
	acSysCmdIniFile	Devuelve el nombre del archivo .ini asociado a Microsoft Access.
	acSysCmdAccessDir	Devuelve el nombre del directorio donde se encuentra Msaccess.exe.
	acSysCmdProfile	Devuelve el valor de /perfil que especifica el usuario al iniciar Microsoft Access desde la línea de comandos.
	acSysCmdGetWorkgroupFile	Devuelve la ruta de acceso al archivo de grupo de trabajo (System.mdw).
	La constante siguiente proporciona información sobre el estado de un objeto de base de datos.
	acSysCmdGetObjectState	Devuelve el estado del objeto de base de datos especificado. Al especificar este valor en acción es necesario indicar los argumentos tipoobjeto y nombreobjeto.
texto	Expresión de cadena que identifica el texto a mostrar alineado a la izquierda en la barra de estado. Este argumento es necesario cuando el argumento acción es acSysCmdInitMeter, acSysCmdUpdateMeter o acSysCmdSetStatus, y no es válido para otros valores del argumento acción.
valor	Expresión numérica que controla la presentación del indicador de evolución. Este argumento es necesario cuando el argumento acción es acSysCmdInitMeter, y no es válido para otros valores del argumento acción.
tipoobjeto	Una de las siguientes constantes intrínsecas:
	acTable
	acQuery
	acForm
	acReport
	acMacro
	acModule
	Este argumento es necesario cuando el argumento acción es acSysCmdGetObjectState, y no es válido para otros valores del argumento acción.
nombreobjeto	Expresión de cadena con el nombre válido de un objeto de base de datos del tipo especificado en el argumento tipoobjeto. Este argumento es necesario cuando el argumento acción es acSysCmdGetObjectState, y no es válido para otros valores del argumento acción.
Comentarios

Al llamar a la función SysCmd con las distintas acciones de indicador de evolución puede mostrar un indicador de evolución en la barra de estado para las operaciones con duración o número de etapas conocidos, y actualizarlo para mostrar la evolución de la operación.

Para mostrar un indicador de evolución en la barra de estado, primero debe llamar a la función SysCmd con acSysCmdInitMeter en el argumento acción y especificando los argumentos texto y valor. Cuando acción es acSysCmdInitMeter, el argumento valor es el valor máximo del indicador, o 100 por ciento.

Para actualizar el indicador y mostrar la evolución de la operación, llame a la función SysCmd con acSysCmdUpdateMeter en el argumento acción y especificando el argumento valor. Cuando el argumento acción es acSysCmdUpdateMeter, la función SysCmd utiliza el argumento valor para calcular el porcentaje que debe mostrar el indicador. Por ejemplo, si establece como valor máximo 200 y actualiza el indicador con el valor 100, el indicador de evolución aparecerá relleno hasta la mitad.

También puede cambiar el texto mostrado en la barra de estado, llamando a la función SysCmd con el argumento acSysCmdSetStatus acción y especificando el argumento texto. Por ejemplo, durante un proceso de ordenación podría especificar como texto "Ordenando...". Cuando terminase el proceso, restablecería la barra de estado eliminando el texto especificado. El argumento texto puede contener unos 80 caracteres. Como el texto de la barra de estado se muestra con una fuente proporcional, el número efectivo de caracteres que se pueden mostrar está determinado por el ancho total de los caracteres especificados en el argumento texto.

Al aumentar la longitud del texto de la barra de estado se reduce la del indicador de evolución. Si el texto es más largo que la barra de estado y el argumento acción es acSysCmdInitMeter, la función SysCmd ignora el texto y no muestra nada en la barra de estado. Si el texto es más largo que la barra de estado y el argumento acción es acSysCmdSetStatus, la función SysCmd truncará el texto para ajustarlo a la barra de estado.

No es posible establecer en la barra de estado una cadena de longitud cero (" "). Si desea eliminar el texto actual de la barra de estado, establezca en el argumento texto un espacio. En los ejemplos siguientes se indican formas de eliminar el texto de la barra de estado:

varReturn = SysCmd(acSysCmdInitMeter, " ", 100)

varReturn = SysCmd(acSysCmdSetStatus, " ")

Si el indicador de evolución ya está en pantalla al establecer el texto llamando a la función SysCmd con el argumento acSysCmdSetStatus en acción, la función SysCmd eliminará automáticamente el indicador.

Puede llamar a la función SysCmd con otras acciones para obtener información del sistema sobre Microsoft Access, como el número de versión de Microsoft Access en ejecución, si se trata de una versión en tiempo de ejecución, la ubicación del archivo ejecutable de Microsoft Access, el valor del argumento /perfil especificado en la línea de comandos, y el nombre del archivo .ini asociado a Microsoft Access.

Nota   Tanto la configuración general como la personalizada de Microsoft Access se almacenan ahora en el Registro de Windows, por lo que probablemente no será necesario un archivo .ini para la aplicación de Microsoft Access. El argumento acSysCmdIniFile para acción existe sólo por motivos de compatibilidad con versiones anteriores de Microsoft Access.

Puede llamar a la función SysCmd con el argumento acción acSysCmdGetObjectState y especificando los argumentos tipoobjeto y nombreobjeto para obtener el estado del objeto de base de datos especificado. Un objeto puede estar en uno de cuatro estados posibles: no abierto o no existente, abierto, nuevo o modificado pero no guardado.

Por ejemplo, si está diseñando un asistente que inserta un nuevo campo en una tabla, deberá determinar si la estructura de la tabla ha variado y aún no se ha guardado para poder guardarla antes de modificar su estructura. Puede comprobar el valor devuelto por la función SysCmd para determinar el estado de la tabla.

La función SysCmd con el argumento acción acSysCmdGetObjectState acción puede devolver cualquier combinación de las constantes siguientes:

Constante	Estado del objeto de base de datos
acObjStateOpen	Abierto
acObjStateNew	Nuevo
acObjStateDirty	Modificado y no guardado
Nota   Si el objeto al que se refiere el argumento nombreobjeto no está abierto o no existe, la función SysCmd devolverá el valor cero.


Ejemplo de la función SysCmd

En el ejemplo siguiente se crea un objeto Recordset de tipo snapshot, se lee cada registro y se muestra un indicador de evolución que muestra la posición relativa en el snapshot.

Function LeeRegistros(strTableName As String) As Integer

Const conBadArgs = -1

Dim dbs As Database, rst As Recordset

Dim lngCount As Long, strMsg As String

Dim varReturn As Variant, lngX As Long

LeeRegistros = 0

If strTableName <> "" Then

DoCmd.Hourglass True

Set dbs = CurrentDb

On Error Resume Next

Set rst = dbs.OpenRecordSet(strTableName)

' Obtiene el número de registros.

rst.MoveLast

rst.MoveFirst

If Err Then

ReadRecords = conBadArgs

End If

lngCount = rst.RecordCount

On Error GoTo 0

If lngCount Then

strMsg = "Leyendo " & UCase$(strTableName) & "..."

varReturn = SysCmd(acSysCmdInitMeter, strMsg, lngCount)

' Muestra el mensaje en la barra de estado.

For lngX = 1 To lngCount

varReturn = SysCmd(acSysCmdUpdateMeter, lngX)

' Actualiza el indicador.

.	' Hace algo con el registro.

.

.

rst.MoveNext	' Pasa al registro siguiente.

Next lngX

varReturn = SysCmd(acSysCmdClearStatus)

GoSub CloseObjects

LeeRegistros = lngCount	' Devuelve el número de registros.

Exit Function

End If

End If

' No encontrado, o no contiene registros.

strMsg = "La tabla '" & strTableName & "'no se encuentra, o no contiene registros.'"

MsgBox strMsg, vbInformation, "LeeRegistros"

GoSub CloseObjects

Exit Function

CloseObjects:

On Error Resume Next

rst.Close

dbs.Close

On Error GoTo 0

DoCmd.Hourglass False

Return

End Function

En el ejemplo siguiente se muestra la forma de usar la función SysCmd con el argumento acción acSysCmdGetObjectState para determinar el estado del objeto de base de datos activo.

Dim intObjType As Integer, strObjName As String, intObjState As Integer

intObjType = Application.CurrentObjectType

strObjName = Application.CurrentObjectName

intObjState = SysCmd(acSysCmdGetObjectState, intObjType, strObjName)

If intObjState <> 0 Then

.

.

.

End If